mis-crystal-design-system 18.1.0-signal-test → 18.1.0-signal

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 (114) hide show
  1. package/async-search-dropdown/async-dropdown.component.d.ts +1 -1
  2. package/button/button.directive.scss +15 -13
  3. package/drawer/drawer.scss +1 -1
  4. package/dynamic-theme/branding.types.d.ts +84 -0
  5. package/dynamic-theme/dynamic-theme.module.d.ts +9 -0
  6. package/dynamic-theme/dynamic-theme.service.d.ts +89 -0
  7. package/dynamic-theme/index.d.ts +1 -0
  8. package/dynamic-theme/public_api.d.ts +3 -0
  9. package/esm2022/action-list/action-list.component.mjs +2 -2
  10. package/esm2022/async-search-dropdown/async-dropdown.component.mjs +8 -8
  11. package/esm2022/button/button.component.mjs +2 -2
  12. package/esm2022/checkbox/checkbox.component.mjs +2 -2
  13. package/esm2022/chip/chip.component.mjs +2 -2
  14. package/esm2022/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +2 -2
  15. package/esm2022/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +2 -2
  16. package/esm2022/dropdown/dropdown.component.mjs +2 -2
  17. package/esm2022/dynamic-form/dynamic-form.component.mjs +2 -2
  18. package/esm2022/dynamic-theme/branding.types.mjs +93 -0
  19. package/esm2022/dynamic-theme/dynamic-theme.module.mjs +25 -0
  20. package/esm2022/dynamic-theme/dynamic-theme.service.mjs +193 -0
  21. package/esm2022/dynamic-theme/index.mjs +2 -0
  22. package/esm2022/dynamic-theme/mis-crystal-design-system-dynamic-theme.mjs +5 -0
  23. package/esm2022/dynamic-theme/public_api.mjs +4 -0
  24. package/esm2022/fab/fab.component.mjs +3 -3
  25. package/esm2022/filter/filter-panel/filter-panel.component.mjs +3 -3
  26. package/esm2022/input/mis-input.component.mjs +2 -2
  27. package/esm2022/input-stepper/input-stepper/input-stepper.component.mjs +5 -5
  28. package/esm2022/loader/loader.component.mjs +2 -2
  29. package/esm2022/mobile-filter/mobile-filter.component.mjs +2 -2
  30. package/esm2022/multi-select-dropdown/multi-select-dropdown.component.mjs +2 -2
  31. package/esm2022/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +2 -2
  32. package/esm2022/phone-input/phone-input.component.mjs +2 -2
  33. package/esm2022/public-api.mjs +1 -1
  34. package/esm2022/radio-button/radio-button.component.mjs +2 -2
  35. package/esm2022/ske-loader/ske-loader.component.mjs +2 -2
  36. package/esm2022/slider/slider.component.mjs +2 -2
  37. package/esm2022/snackbar/snackbar/snackbar.component.mjs +2 -2
  38. package/esm2022/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +2 -2
  39. package/esm2022/star-rating/star-rating.component.mjs +2 -2
  40. package/esm2022/switch/switch.component.mjs +2 -2
  41. package/esm2022/table/actions-cell/actions-cell.component.mjs +2 -2
  42. package/esm2022/table/filter/filter.component.mjs +2 -2
  43. package/esm2022/table/sub-table/sub-table.component.mjs +2 -2
  44. package/esm2022/table/table.component.mjs +2 -2
  45. package/esm2022/timepicker/timepicker.component.mjs +2 -2
  46. package/esm2022/toast/toast.component.mjs +3 -3
  47. package/esm2022/tooltip/tooltip-container/tooltip.component.mjs +2 -2
  48. package/fesm2022/mis-crystal-design-system-action-list.mjs +2 -2
  49. package/fesm2022/mis-crystal-design-system-action-list.mjs.map +1 -1
  50. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs +7 -7
  51. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -1
  52. package/fesm2022/mis-crystal-design-system-button.mjs +2 -2
  53. package/fesm2022/mis-crystal-design-system-button.mjs.map +1 -1
  54. package/fesm2022/mis-crystal-design-system-checkbox.mjs +2 -2
  55. package/fesm2022/mis-crystal-design-system-checkbox.mjs.map +1 -1
  56. package/fesm2022/mis-crystal-design-system-chip.mjs +2 -2
  57. package/fesm2022/mis-crystal-design-system-chip.mjs.map +1 -1
  58. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs +2 -2
  59. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +1 -1
  60. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs +2 -2
  61. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -1
  62. package/fesm2022/mis-crystal-design-system-dropdown.mjs +2 -2
  63. package/fesm2022/mis-crystal-design-system-dropdown.mjs.map +1 -1
  64. package/fesm2022/mis-crystal-design-system-dynamic-form.mjs +2 -2
  65. package/fesm2022/mis-crystal-design-system-dynamic-form.mjs.map +1 -1
  66. package/fesm2022/mis-crystal-design-system-dynamic-theme.mjs +313 -0
  67. package/fesm2022/mis-crystal-design-system-dynamic-theme.mjs.map +1 -0
  68. package/fesm2022/mis-crystal-design-system-fab.mjs +2 -2
  69. package/fesm2022/mis-crystal-design-system-fab.mjs.map +1 -1
  70. package/fesm2022/mis-crystal-design-system-filter.mjs +2 -2
  71. package/fesm2022/mis-crystal-design-system-filter.mjs.map +1 -1
  72. package/fesm2022/mis-crystal-design-system-input-stepper.mjs +4 -4
  73. package/fesm2022/mis-crystal-design-system-input-stepper.mjs.map +1 -1
  74. package/fesm2022/mis-crystal-design-system-input.mjs +2 -2
  75. package/fesm2022/mis-crystal-design-system-input.mjs.map +1 -1
  76. package/fesm2022/mis-crystal-design-system-loader.mjs +2 -2
  77. package/fesm2022/mis-crystal-design-system-loader.mjs.map +1 -1
  78. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs +2 -2
  79. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs.map +1 -1
  80. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs +2 -2
  81. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -1
  82. package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs +2 -2
  83. package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +1 -1
  84. package/fesm2022/mis-crystal-design-system-phone-input.mjs +2 -2
  85. package/fesm2022/mis-crystal-design-system-phone-input.mjs.map +1 -1
  86. package/fesm2022/mis-crystal-design-system-radio-button.mjs +2 -2
  87. package/fesm2022/mis-crystal-design-system-radio-button.mjs.map +1 -1
  88. package/fesm2022/mis-crystal-design-system-ske-loader.mjs +2 -2
  89. package/fesm2022/mis-crystal-design-system-ske-loader.mjs.map +1 -1
  90. package/fesm2022/mis-crystal-design-system-slider.mjs +2 -2
  91. package/fesm2022/mis-crystal-design-system-slider.mjs.map +1 -1
  92. package/fesm2022/mis-crystal-design-system-snackbar.mjs +2 -2
  93. package/fesm2022/mis-crystal-design-system-snackbar.mjs.map +1 -1
  94. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs +2 -2
  95. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +1 -1
  96. package/fesm2022/mis-crystal-design-system-star-rating.mjs +2 -2
  97. package/fesm2022/mis-crystal-design-system-star-rating.mjs.map +1 -1
  98. package/fesm2022/mis-crystal-design-system-switch.mjs +2 -2
  99. package/fesm2022/mis-crystal-design-system-switch.mjs.map +1 -1
  100. package/fesm2022/mis-crystal-design-system-table.mjs +8 -8
  101. package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
  102. package/fesm2022/mis-crystal-design-system-timepicker.mjs +2 -2
  103. package/fesm2022/mis-crystal-design-system-timepicker.mjs.map +1 -1
  104. package/fesm2022/mis-crystal-design-system-toast.mjs +2 -2
  105. package/fesm2022/mis-crystal-design-system-toast.mjs.map +1 -1
  106. package/fesm2022/mis-crystal-design-system-tooltip.mjs +2 -2
  107. package/fesm2022/mis-crystal-design-system-tooltip.mjs.map +1 -1
  108. package/fesm2022/mis-crystal-design-system.mjs.map +1 -1
  109. package/input/mis-input.component.scss +18 -18
  110. package/modal/modal.scss +1 -1
  111. package/package.json +19 -13
  112. package/styles/mis-color-constants.scss +204 -0
  113. package/styles/mis-icons.scss +56 -56
  114. package/styles/mis-old-icon-styles.scss +21 -21
@@ -1052,11 +1052,11 @@ export class DynamicFormComponent {
1052
1052
  i0.ɵɵproperty("formGroup", ctx.dynamicForm());
1053
1053
  i0.ɵɵadvance(2);
1054
1054
  i0.ɵɵproperty("ngForOf", ctx.getDynamicFieldsControls().controls);
1055
- } }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, i1.NgStyle, i2.ɵNgNoValidate, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.FormControlDirective, i2.FormGroupDirective, i2.FormGroupName, i2.FormArrayName, i3.DropdownComponent, i4.SwitchComponent, i5.MultiSelectDropdownComponent, i6.TzDatepickerDirective, i1.KeyValuePipe], styles: ["p[_ngcontent-%COMP%]{margin:0;cursor:default} .main-container{margin:0;max-width:100%}.sub-dynamic-form[_ngcontent-%COMP%]{padding-left:24px;border-bottom:1px solid var(--grey-seperators)}.dynamic-field[_ngcontent-%COMP%] .container{height:32px!important}.single-line-field-container[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:28px 16px;border-bottom:1px solid var(--grey-seperators)}.multi-line-field-container[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:flex-start;padding:28px 16px;flex-wrap:wrap;border-bottom:1px solid var(--grey-seperators)}.field-title-sm[_ngcontent-%COMP%]{margin-bottom:8px;cursor:default}.input-field[_ngcontent-%COMP%]{width:100%;background-color:var(--grey-bg-1);border:1px solid var(--grey-seperators);border-radius:6px}.ip-text[_ngcontent-%COMP%]{height:44px;padding:8px 12px}.ip-textarea[_ngcontent-%COMP%]{max-height:94px;padding:8px}input[_ngcontent-%COMP%]:focus{outline:none}input[_ngcontent-%COMP%]::placeholder{color:var(--grey-seperators)}textarea[_ngcontent-%COMP%]:focus{outline:none}.date-picker-container[_ngcontent-%COMP%]{position:relative;width:140px}.date-picker-container[_ngcontent-%COMP%] .date-picker[_ngcontent-%COMP%]{cursor:pointer;height:32px;width:100%;font-size:14px;border-radius:6px;padding:0 12px;border:1px solid var(--grey-seperators);inset:10px auto auto 80px;background-color:var(--text-white)}.date-picker-container[_ngcontent-%COMP%] .date-picker[_ngcontent-%COMP%]:hover{background-color:var(--grey-hover)}.date-picker-container[_ngcontent-%COMP%] .date-picker-icon[_ngcontent-%COMP%]{position:absolute;top:50%;right:12px;transform:translateY(-50%);cursor:pointer}form[_ngcontent-%COMP%] .dynamic-field[_ngcontent-%COMP%]:last-child{border-bottom:none!important}#checkboxes-container[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}.radio-checkbox-common[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;cursor:pointer;margin-right:8px;margin-bottom:8px;background-color:var(--text-white);padding:12px 16px;border:1px solid var(--text-muted);border-radius:8px}.radio-checkbox-common[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--text-muted);cursor:pointer}.radio-checkbox-common[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{margin-right:8px}.checkbox-active[_ngcontent-%COMP%]{background-color:var(--pmry-500)}.checkbox-active[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--text-white)}#error-messages-container[_ngcontent-%COMP%]{margin-top:4px;width:100%;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}#error-messages-container[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--sem-error)}.removeable-container[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center}.removeable-container[_ngcontent-%COMP%] .remove-icon[_ngcontent-%COMP%]{cursor:pointer;margin-left:8px;max-width:24px}span[_ngcontent-%COMP%]{color:var(--sem-error)}"] }); }
1055
+ } }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, i1.NgStyle, i2.ɵNgNoValidate, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.FormControlDirective, i2.FormGroupDirective, i2.FormGroupName, i2.FormArrayName, i3.DropdownComponent, i4.SwitchComponent, i5.MultiSelectDropdownComponent, i6.TzDatepickerDirective, i1.KeyValuePipe], styles: ["[_ngcontent-%COMP%]:root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}p[_ngcontent-%COMP%]{margin:0;cursor:default} .main-container{margin:0;max-width:100%}.sub-dynamic-form[_ngcontent-%COMP%]{padding-left:24px;border-bottom:1px solid var(--border-primary, #E0E0E0)}.dynamic-field[_ngcontent-%COMP%] .container{height:32px!important}.single-line-field-container[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:28px 16px;border-bottom:1px solid var(--border-primary, #E0E0E0)}.multi-line-field-container[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:flex-start;padding:28px 16px;flex-wrap:wrap;border-bottom:1px solid var(--border-primary, #E0E0E0)}.field-title-sm[_ngcontent-%COMP%]{margin-bottom:8px;cursor:default}.input-field[_ngcontent-%COMP%]{width:100%;background-color:var(--bg-secondary, #FAFAFA);border:1px solid var(--border-primary, #E0E0E0);border-radius:6px}.ip-text[_ngcontent-%COMP%]{height:44px;padding:8px 12px}.ip-textarea[_ngcontent-%COMP%]{max-height:94px;padding:8px}input[_ngcontent-%COMP%]:focus{outline:none}input[_ngcontent-%COMP%]::placeholder{color:var(--border-primary, #E0E0E0)}textarea[_ngcontent-%COMP%]:focus{outline:none}.date-picker-container[_ngcontent-%COMP%]{position:relative;width:140px}.date-picker-container[_ngcontent-%COMP%] .date-picker[_ngcontent-%COMP%]{cursor:pointer;height:32px;width:100%;font-size:14px;border-radius:6px;padding:0 12px;border:1px solid var(--border-primary, #E0E0E0);inset:10px auto auto 80px;background-color:var(--bg-primary, #FFFFFF)}.date-picker-container[_ngcontent-%COMP%] .date-picker[_ngcontent-%COMP%]:hover{background-color:var(--brand-primary-hover, #F0F3FA)}.date-picker-container[_ngcontent-%COMP%] .date-picker-icon[_ngcontent-%COMP%]{position:absolute;top:50%;right:12px;transform:translateY(-50%);cursor:pointer}form[_ngcontent-%COMP%] .dynamic-field[_ngcontent-%COMP%]:last-child{border-bottom:none!important}#checkboxes-container[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}.radio-checkbox-common[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;cursor:pointer;margin-right:8px;margin-bottom:8px;background-color:var(--bg-primary, #FFFFFF);padding:12px 16px;border:1px solid var(--text-secondary, #6A737D);border-radius:8px}.radio-checkbox-common[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--text-secondary, #6A737D);cursor:pointer}.radio-checkbox-common[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{margin-right:8px}.checkbox-active[_ngcontent-%COMP%]{background-color:var(--brand-primary, #0937B2)}.checkbox-active[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--bg-primary, #FFFFFF)}#error-messages-container[_ngcontent-%COMP%]{margin-top:4px;width:100%;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}#error-messages-container[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--brand-error, #B00020)}.removeable-container[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center}.removeable-container[_ngcontent-%COMP%] .remove-icon[_ngcontent-%COMP%]{cursor:pointer;margin-left:8px;max-width:24px}span[_ngcontent-%COMP%]{color:var(--brand-error, #B00020)}"] }); }
1056
1056
  }
1057
1057
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DynamicFormComponent, [{
1058
1058
  type: Component,
1059
- args: [{ selector: "mis-dynamic-form", template: "<form [formGroup]=\"dynamicForm()\">\n <ng-container formArrayName=\"dynamicFields\">\n <ng-container [formGroupName]=\"i\" *ngFor=\"let fieldControl of getDynamicFieldsControls().controls; let i = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: formFieldsArray?.[i],\n formGroup: fieldControl,\n control: fieldControl.controls.value\n }\"\n >\n </ng-container>\n <div class=\"sub-dynamic-form\" *ngIf=\"fieldControl?.value && (!!formFieldsArray?.[i]?.subFields && formFieldsArray?.[i]?.subFields?.length > 0 && matchParentConfig(formFieldsArray?.[i]?.subFields, fieldControl?.controls?.value?.value?.value))\">\n <ng-container *ngFor=\"let subFieldControl of fieldControl.controls.subFields.controls; let j = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: findSelectedSubFieldConfig(formFieldsArray?.[i]?.subFields, fieldControl.controls.value.value.value,j),\n control: subFieldControl\n }\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</form>\n\n\n<ng-template #dynamicField let-field let-control=\"control\" let-formgroup=\"formGroup\">\n\n <!-- fieldType: 'input' fieldInputType: 'text' | 'number' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && (field.fieldInputType === 'text' || field.fieldInputType === 'number')\">\n <ng-container *ngIf=\"customInputTextNumber; else defaultInputTextNumber\">\n <ng-template\n [ngTemplateOutlet]=\"customInputTextNumber\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputTextNumber>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field?.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <input class=\"input-field ip-text\" [type]=\"field.fieldInputType\" [formControl]=\"control\"\n (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\" \n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" \n [min]=\"field.fieldInputType === 'number' ? 0 : '' \"/>\n <ng-container *ngIf=\"control.touched && control.errors\"\n [ngTemplateOutlet]=\"dynamicFieldErrors\" \n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\"\n >\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n <!-- fieldType: 'input' fieldInputType: 'textarea' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'textarea'\">\n <ng-container *ngIf=\"customInputTextarea; else defaultInputTextarea\">\n <ng-template\n [ngTemplateOutlet]=\"customInputTextarea\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputTextarea>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <textarea class=\"input-field ip-textarea\" type=\"text\"\n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" [formControl]=\"control\" (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\"></textarea>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n <!-- fieldType: 'input' fieldInputType: 'date' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <ng-container *ngIf=\"customInputDate; else defaultInputDate\">\n <ng-template\n [ngTemplateOutlet]=\"customInputDate\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputDate>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <p class=\"h6\">\n {{ field.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div class=\"date-picker-container\">\n <input class=\"date-picker\" readonly misTzDp [dpConfig]=\"field.fieldConfig\"\n (dateChange)=\"control.setValue($event)\" [selectedDate]=\"control.value\" [offsetY]=\"0\"\n [value]=\"control.value\" #dp />\n <img alt=\"data-picker\" *ngIf=\"calendarIconUrl()\" class=\"date-picker-icon\" [src]=\"calendarIconUrl()\"\n (click)=\"dp.click()\" />\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- fieldType: 'boolean' fieldInputType: 'toggle' -->\n <ng-container *ngIf=\"field.fieldType === 'boolean' && field.fieldInputType === 'toggle'\">\n <ng-container *ngIf=\"customBooleanToggle; else defaultBooleanToggle\">\n <ng-template\n [ngTemplateOutlet]=\"customBooleanToggle\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultBooleanToggle>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <mis-switch [control]=\"control\" (valueChanged)=\"updateSubDynamicFields(field, formgroup, $event)\"></mis-switch>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div> \n </ng-template>\n </ng-container>\n\n <!-- fieldType: 'singleSelect' fieldInputType: 'dropdown' -->\n <ng-container *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'dropdown'\">\n <ng-container *ngIf=\"customSingleSelectDropdown; else defaultSingleSelectDropdown\">\n <ng-template\n [ngTemplateOutlet]=\"customSingleSelectDropdown\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultSingleSelectDropdown>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div [ngClass]=\"{'removeable-container' : field?.isRemoveable}\">\n <mis-dropdown [searchEnabled]=\"false\" [width]=\"'140px'\" [data]=\"field.itemsList\" [selectedItem]=\"control.value\"\n (onChange)=\"updateSelectedValueForSingleSelect(field, control, formgroup, $event);\">\n </mis-dropdown>\n <img *ngIf=\"field.isRemoveable && removeIconUrl()\" class=\"remove-icon\" [src]=\"removeIconUrl()\" (click)=\"fieldRemoved.emit(field)\">\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container >\n \n\n <!-- fieldType: 'singleSelect' fieldInputType: 'radio' -->\n <ng-container *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'radio'\">\n <ng-container *ngIf=\"customSingleSelectRadio; else defaultSingleSelectRadio\">\n <ng-template\n [ngTemplateOutlet]=\"customSingleSelectRadio\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultSingleSelectRadio>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': item.label === control.value?.label }\"\n (click)=\"updateSelectedValueForSingleSelect(field, control, formgroup, item);\">\n <img *ngIf=\"(item.label === control.value?.label) && activeBtnIconUrl()\" [src]=\"activeBtnIconUrl()\" alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n\n <!-- fieldType: 'multiSelect' fieldInputType: 'checkbox' -->\n <ng-container *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'checkbox'\">\n <ng-container *ngIf=\"customMultiSelectCheckbox; else defaultMultiSelectCheckbox\">\n <ng-template\n [ngTemplateOutlet]=\"customMultiSelectCheckbox\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultMultiSelectCheckbox>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': isCheckBoxSelected(item.label, control.value) }\"\n (click)=\"updateSelectedValueForMultiSelect(field, control, formgroup, [item])\">\n <img *ngIf=\"isCheckBoxSelected(item.label, control.value) && activeBtnIconUrl()\" [src]=\"activeBtnIconUrl()\"\n alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n\n <!-- fieldType: 'multiSelect' fieldInputType: 'dropdown' -->\n <ng-container *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'dropdown'\">\n <ng-container *ngIf=\"customMultiSelectDropdown; else defaultMultiSelectDropdown\">\n <ng-template\n [ngTemplateOutlet]=\"customMultiSelectDropdown\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultMultiSelectDropdown>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <mis-multi-select-dropdown [width]=\"'140px'\" [showSelectedCount]=\"true\" [dropdownListWidth]=\"'256px'\"\n [searchEnabled]=\"false\" [hideApplyButton]=\"true\" [data]=\"field.itemsList\"\n [selectedItems]=\"control.value\" (onChange)=\"updateSelectedValueForMultiSelect(field, control, formgroup, $event);\"></mis-multi-select-dropdown>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n</ng-template>\n\n<ng-template #dynamicFieldErrors let-errors>\n <div id=\"error-messages-container\">\n <ng-container *ngFor=\"let error of errors | keyvalue\">\n <p class=\"h8\">\n {{\" \u2022 &nbsp;\" + error.value}}\n </p>\n <div [ngStyle]=\"{ 'flex-basis': '100%', 'height': '0' }\"></div>\n </ng-container>\n </div>\n</ng-template>", styles: ["p{margin:0;cursor:default}::ng-deep .main-container{margin:0;max-width:100%}.sub-dynamic-form{padding-left:24px;border-bottom:1px solid var(--grey-seperators)}.dynamic-field ::ng-deep .container{height:32px!important}.single-line-field-container{display:flex;justify-content:space-between;align-items:center;padding:28px 16px;border-bottom:1px solid var(--grey-seperators)}.multi-line-field-container{display:flex;justify-content:flex-start;align-items:flex-start;padding:28px 16px;flex-wrap:wrap;border-bottom:1px solid var(--grey-seperators)}.field-title-sm{margin-bottom:8px;cursor:default}.input-field{width:100%;background-color:var(--grey-bg-1);border:1px solid var(--grey-seperators);border-radius:6px}.ip-text{height:44px;padding:8px 12px}.ip-textarea{max-height:94px;padding:8px}input:focus{outline:none}input::placeholder{color:var(--grey-seperators)}textarea:focus{outline:none}.date-picker-container{position:relative;width:140px}.date-picker-container .date-picker{cursor:pointer;height:32px;width:100%;font-size:14px;border-radius:6px;padding:0 12px;border:1px solid var(--grey-seperators);inset:10px auto auto 80px;background-color:var(--text-white)}.date-picker-container .date-picker:hover{background-color:var(--grey-hover)}.date-picker-container .date-picker-icon{position:absolute;top:50%;right:12px;transform:translateY(-50%);cursor:pointer}form .dynamic-field:last-child{border-bottom:none!important}#checkboxes-container{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}.radio-checkbox-common{display:flex;justify-content:center;align-items:center;cursor:pointer;margin-right:8px;margin-bottom:8px;background-color:var(--text-white);padding:12px 16px;border:1px solid var(--text-muted);border-radius:8px}.radio-checkbox-common p{color:var(--text-muted);cursor:pointer}.radio-checkbox-common img{margin-right:8px}.checkbox-active{background-color:var(--pmry-500)}.checkbox-active p{color:var(--text-white)}#error-messages-container{margin-top:4px;width:100%;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}#error-messages-container p{color:var(--sem-error)}.removeable-container{display:flex;justify-content:center;align-items:center}.removeable-container .remove-icon{cursor:pointer;margin-left:8px;max-width:24px}span{color:var(--sem-error)}\n"] }]
1059
+ args: [{ selector: "mis-dynamic-form", template: "<form [formGroup]=\"dynamicForm()\">\n <ng-container formArrayName=\"dynamicFields\">\n <ng-container [formGroupName]=\"i\" *ngFor=\"let fieldControl of getDynamicFieldsControls().controls; let i = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: formFieldsArray?.[i],\n formGroup: fieldControl,\n control: fieldControl.controls.value\n }\"\n >\n </ng-container>\n <div class=\"sub-dynamic-form\" *ngIf=\"fieldControl?.value && (!!formFieldsArray?.[i]?.subFields && formFieldsArray?.[i]?.subFields?.length > 0 && matchParentConfig(formFieldsArray?.[i]?.subFields, fieldControl?.controls?.value?.value?.value))\">\n <ng-container *ngFor=\"let subFieldControl of fieldControl.controls.subFields.controls; let j = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: findSelectedSubFieldConfig(formFieldsArray?.[i]?.subFields, fieldControl.controls.value.value.value,j),\n control: subFieldControl\n }\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</form>\n\n\n<ng-template #dynamicField let-field let-control=\"control\" let-formgroup=\"formGroup\">\n\n <!-- fieldType: 'input' fieldInputType: 'text' | 'number' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && (field.fieldInputType === 'text' || field.fieldInputType === 'number')\">\n <ng-container *ngIf=\"customInputTextNumber; else defaultInputTextNumber\">\n <ng-template\n [ngTemplateOutlet]=\"customInputTextNumber\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputTextNumber>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field?.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <input class=\"input-field ip-text\" [type]=\"field.fieldInputType\" [formControl]=\"control\"\n (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\" \n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" \n [min]=\"field.fieldInputType === 'number' ? 0 : '' \"/>\n <ng-container *ngIf=\"control.touched && control.errors\"\n [ngTemplateOutlet]=\"dynamicFieldErrors\" \n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\"\n >\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n <!-- fieldType: 'input' fieldInputType: 'textarea' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'textarea'\">\n <ng-container *ngIf=\"customInputTextarea; else defaultInputTextarea\">\n <ng-template\n [ngTemplateOutlet]=\"customInputTextarea\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputTextarea>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <textarea class=\"input-field ip-textarea\" type=\"text\"\n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" [formControl]=\"control\" (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\"></textarea>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n <!-- fieldType: 'input' fieldInputType: 'date' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <ng-container *ngIf=\"customInputDate; else defaultInputDate\">\n <ng-template\n [ngTemplateOutlet]=\"customInputDate\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputDate>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <p class=\"h6\">\n {{ field.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div class=\"date-picker-container\">\n <input class=\"date-picker\" readonly misTzDp [dpConfig]=\"field.fieldConfig\"\n (dateChange)=\"control.setValue($event)\" [selectedDate]=\"control.value\" [offsetY]=\"0\"\n [value]=\"control.value\" #dp />\n <img alt=\"data-picker\" *ngIf=\"calendarIconUrl()\" class=\"date-picker-icon\" [src]=\"calendarIconUrl()\"\n (click)=\"dp.click()\" />\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- fieldType: 'boolean' fieldInputType: 'toggle' -->\n <ng-container *ngIf=\"field.fieldType === 'boolean' && field.fieldInputType === 'toggle'\">\n <ng-container *ngIf=\"customBooleanToggle; else defaultBooleanToggle\">\n <ng-template\n [ngTemplateOutlet]=\"customBooleanToggle\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultBooleanToggle>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <mis-switch [control]=\"control\" (valueChanged)=\"updateSubDynamicFields(field, formgroup, $event)\"></mis-switch>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div> \n </ng-template>\n </ng-container>\n\n <!-- fieldType: 'singleSelect' fieldInputType: 'dropdown' -->\n <ng-container *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'dropdown'\">\n <ng-container *ngIf=\"customSingleSelectDropdown; else defaultSingleSelectDropdown\">\n <ng-template\n [ngTemplateOutlet]=\"customSingleSelectDropdown\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultSingleSelectDropdown>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div [ngClass]=\"{'removeable-container' : field?.isRemoveable}\">\n <mis-dropdown [searchEnabled]=\"false\" [width]=\"'140px'\" [data]=\"field.itemsList\" [selectedItem]=\"control.value\"\n (onChange)=\"updateSelectedValueForSingleSelect(field, control, formgroup, $event);\">\n </mis-dropdown>\n <img *ngIf=\"field.isRemoveable && removeIconUrl()\" class=\"remove-icon\" [src]=\"removeIconUrl()\" (click)=\"fieldRemoved.emit(field)\">\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container >\n \n\n <!-- fieldType: 'singleSelect' fieldInputType: 'radio' -->\n <ng-container *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'radio'\">\n <ng-container *ngIf=\"customSingleSelectRadio; else defaultSingleSelectRadio\">\n <ng-template\n [ngTemplateOutlet]=\"customSingleSelectRadio\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultSingleSelectRadio>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': item.label === control.value?.label }\"\n (click)=\"updateSelectedValueForSingleSelect(field, control, formgroup, item);\">\n <img *ngIf=\"(item.label === control.value?.label) && activeBtnIconUrl()\" [src]=\"activeBtnIconUrl()\" alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n\n <!-- fieldType: 'multiSelect' fieldInputType: 'checkbox' -->\n <ng-container *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'checkbox'\">\n <ng-container *ngIf=\"customMultiSelectCheckbox; else defaultMultiSelectCheckbox\">\n <ng-template\n [ngTemplateOutlet]=\"customMultiSelectCheckbox\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultMultiSelectCheckbox>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': isCheckBoxSelected(item.label, control.value) }\"\n (click)=\"updateSelectedValueForMultiSelect(field, control, formgroup, [item])\">\n <img *ngIf=\"isCheckBoxSelected(item.label, control.value) && activeBtnIconUrl()\" [src]=\"activeBtnIconUrl()\"\n alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n\n <!-- fieldType: 'multiSelect' fieldInputType: 'dropdown' -->\n <ng-container *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'dropdown'\">\n <ng-container *ngIf=\"customMultiSelectDropdown; else defaultMultiSelectDropdown\">\n <ng-template\n [ngTemplateOutlet]=\"customMultiSelectDropdown\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultMultiSelectDropdown>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <mis-multi-select-dropdown [width]=\"'140px'\" [showSelectedCount]=\"true\" [dropdownListWidth]=\"'256px'\"\n [searchEnabled]=\"false\" [hideApplyButton]=\"true\" [data]=\"field.itemsList\"\n [selectedItems]=\"control.value\" (onChange)=\"updateSelectedValueForMultiSelect(field, control, formgroup, $event);\"></mis-multi-select-dropdown>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n</ng-template>\n\n<ng-template #dynamicFieldErrors let-errors>\n <div id=\"error-messages-container\">\n <ng-container *ngFor=\"let error of errors | keyvalue\">\n <p class=\"h8\">\n {{\" \u2022 &nbsp;\" + error.value}}\n </p>\n <div [ngStyle]=\"{ 'flex-basis': '100%', 'height': '0' }\"></div>\n </ng-container>\n </div>\n</ng-template>", styles: [":root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}p{margin:0;cursor:default}::ng-deep .main-container{margin:0;max-width:100%}.sub-dynamic-form{padding-left:24px;border-bottom:1px solid var(--border-primary, #E0E0E0)}.dynamic-field ::ng-deep .container{height:32px!important}.single-line-field-container{display:flex;justify-content:space-between;align-items:center;padding:28px 16px;border-bottom:1px solid var(--border-primary, #E0E0E0)}.multi-line-field-container{display:flex;justify-content:flex-start;align-items:flex-start;padding:28px 16px;flex-wrap:wrap;border-bottom:1px solid var(--border-primary, #E0E0E0)}.field-title-sm{margin-bottom:8px;cursor:default}.input-field{width:100%;background-color:var(--bg-secondary, #FAFAFA);border:1px solid var(--border-primary, #E0E0E0);border-radius:6px}.ip-text{height:44px;padding:8px 12px}.ip-textarea{max-height:94px;padding:8px}input:focus{outline:none}input::placeholder{color:var(--border-primary, #E0E0E0)}textarea:focus{outline:none}.date-picker-container{position:relative;width:140px}.date-picker-container .date-picker{cursor:pointer;height:32px;width:100%;font-size:14px;border-radius:6px;padding:0 12px;border:1px solid var(--border-primary, #E0E0E0);inset:10px auto auto 80px;background-color:var(--bg-primary, #FFFFFF)}.date-picker-container .date-picker:hover{background-color:var(--brand-primary-hover, #F0F3FA)}.date-picker-container .date-picker-icon{position:absolute;top:50%;right:12px;transform:translateY(-50%);cursor:pointer}form .dynamic-field:last-child{border-bottom:none!important}#checkboxes-container{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}.radio-checkbox-common{display:flex;justify-content:center;align-items:center;cursor:pointer;margin-right:8px;margin-bottom:8px;background-color:var(--bg-primary, #FFFFFF);padding:12px 16px;border:1px solid var(--text-secondary, #6A737D);border-radius:8px}.radio-checkbox-common p{color:var(--text-secondary, #6A737D);cursor:pointer}.radio-checkbox-common img{margin-right:8px}.checkbox-active{background-color:var(--brand-primary, #0937B2)}.checkbox-active p{color:var(--bg-primary, #FFFFFF)}#error-messages-container{margin-top:4px;width:100%;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}#error-messages-container p{color:var(--brand-error, #B00020)}.removeable-container{display:flex;justify-content:center;align-items:center}.removeable-container .remove-icon{cursor:pointer;margin-left:8px;max-width:24px}span{color:var(--brand-error, #B00020)}\n"] }]
1060
1060
  }], () => [], { customInputTextNumber: [{
1061
1061
  type: ContentChild,
1062
1062
  args: ["customInputTextNumber", { static: false }]
@@ -0,0 +1,93 @@
1
+ export var BrandingTypes;
2
+ (function (BrandingTypes) {
3
+ BrandingTypes.defaultTheme = {
4
+ // Brand
5
+ brandPrimary: "#0937B2",
6
+ brandPrimaryLight: "#3C68D0",
7
+ brandPrimaryDark: "#062A99",
8
+ brandPrimaryDarker: "#041F80",
9
+ brandPrimaryLighter: "#638FE7",
10
+ brandPrimaryLightest: "#CBDDFB",
11
+ brandPrimaryHover: "#F0F3FA",
12
+ brandPrimaryActive: "#DAE1F3",
13
+ brandSecondary: "#ED711C",
14
+ brandSecondaryLight: "#F09E65",
15
+ brandSecondaryDark: "#B23600",
16
+ brandSecondaryLighter: "#FFC6F2",
17
+ brandAccent: "#10ADAE",
18
+ brandAccentLight: "#16CBBC",
19
+ brandAccentDark: "#035F6B",
20
+ brandAccentLighter: "#ACDADA",
21
+ // Semantic
22
+ brandSuccess: "#38AF49",
23
+ brandSuccessLight: "#4CAF50",
24
+ brandSuccessDark: "#216531",
25
+ brandSuccessLighter: "#E4F5E9",
26
+ brandSuccessLightest: "#F1FFF3",
27
+ brandError: "#B00020",
28
+ brandErrorLight: "#F04E4E",
29
+ brandErrorDark: "#A60060",
30
+ brandErrorLighter: "#FAE1EA",
31
+ brandErrorLightest: "#FDF2F2",
32
+ brandWarning: "#FF9D00",
33
+ brandWarningLight: "#D4900C",
34
+ brandWarningDark: "#624000",
35
+ brandWarningLighter: "#F4E7C3",
36
+ brandWarningLightest: "#FAEFED",
37
+ brandInfo: "#0091FF",
38
+ brandInfoLight: "#35A1FF",
39
+ brandInfoDark: "#0087B2",
40
+ brandInfoLighter: "#CFECF9",
41
+ // Text
42
+ textPrimary: "#181F33",
43
+ textSecondary: "#6A737D",
44
+ textTertiary: "#929DAB",
45
+ textDisabled: "#C8CDD3",
46
+ textPrimary87: "rgba(24, 31, 51, 0.87)",
47
+ textPrimary60: "rgba(24, 31, 51, 0.60)",
48
+ textPrimary38: "rgba(24, 31, 51, 0.38)",
49
+ textPrimary12: "rgba(24, 31, 51, 0.12)",
50
+ // Background
51
+ bgPrimary: "#FFFFFF",
52
+ bgSecondary: "#FAFAFA",
53
+ bgTertiary: "#F5F5F5",
54
+ bgOverlay: "rgba(0, 0, 0, 0.32)",
55
+ bgOverlayLight: "rgba(0, 0, 0, 0.12)",
56
+ bgOverlayLighter: "rgba(0, 0, 0, 0.08)",
57
+ bgOverlayLightest: "rgba(0, 0, 0, 0.04)",
58
+ // Border
59
+ borderPrimary: "#E0E0E0",
60
+ borderSecondary: "#D6DCE2",
61
+ borderTertiary: "#C8CDD3",
62
+ borderLight: "#F1F4F8",
63
+ borderPrimary12: "rgba(0, 0, 0, 0.12)",
64
+ borderPrimary08: "rgba(0, 0, 0, 0.08)",
65
+ borderPrimary06: "rgba(0, 0, 0, 0.06)",
66
+ // Shadows
67
+ shadowPrimary: "rgba(0, 0, 0, 0.12)",
68
+ shadowSecondary: "rgba(0, 0, 0, 0.08)",
69
+ shadowTertiary: "rgba(0, 0, 0, 0.04)",
70
+ shadowLight: "rgba(0, 0, 0, 0.06)",
71
+ // Status
72
+ statusAvailable: "#929DAB",
73
+ statusUnavailable: "#CCD3DA",
74
+ statusHotseat: "#857BFF",
75
+ statusMultiteam: "#10ADAE",
76
+ statusSelected: "#10ADAE",
77
+ statusUpcoming: "#D4900C",
78
+ statusRoom: "#38AF49",
79
+ statusRoomBooked: "#B23600",
80
+ statusRoomUnavailable: "#181F33",
81
+ // Team
82
+ teamColor1: "#F8C52E",
83
+ teamColor2: "#FA8E20",
84
+ teamColor3: "#987CDD",
85
+ teamColor4: "#16CBBC",
86
+ teamColor5: "#E65010",
87
+ teamColor6: "#A60060",
88
+ teamColor7: "#ED323B",
89
+ teamColor8: "#35A1FF",
90
+ teamColor9: "#80D348",
91
+ };
92
+ })(BrandingTypes || (BrandingTypes = {}));
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmRpbmcudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9keW5hbWljLXRoZW1lL2JyYW5kaW5nLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sS0FBVyxhQUFhLENBK003QjtBQS9NRCxXQUFpQixhQUFhO0lBeUdmLDBCQUFZLEdBQWdCO1FBQ3ZDLFFBQVE7UUFDUixZQUFZLEVBQUUsU0FBUztRQUN2QixpQkFBaUIsRUFBRSxTQUFTO1FBQzVCLGdCQUFnQixFQUFFLFNBQVM7UUFDM0Isa0JBQWtCLEVBQUUsU0FBUztRQUM3QixtQkFBbUIsRUFBRSxTQUFTO1FBQzlCLG9CQUFvQixFQUFFLFNBQVM7UUFDL0IsaUJBQWlCLEVBQUUsU0FBUztRQUM1QixrQkFBa0IsRUFBRSxTQUFTO1FBRTdCLGNBQWMsRUFBRSxTQUFTO1FBQ3pCLG1CQUFtQixFQUFFLFNBQVM7UUFDOUIsa0JBQWtCLEVBQUUsU0FBUztRQUM3QixxQkFBcUIsRUFBRSxTQUFTO1FBRWhDLFdBQVcsRUFBRSxTQUFTO1FBQ3RCLGdCQUFnQixFQUFFLFNBQVM7UUFDM0IsZUFBZSxFQUFFLFNBQVM7UUFDMUIsa0JBQWtCLEVBQUUsU0FBUztRQUU3QixXQUFXO1FBQ1gsWUFBWSxFQUFFLFNBQVM7UUFDdkIsaUJBQWlCLEVBQUUsU0FBUztRQUM1QixnQkFBZ0IsRUFBRSxTQUFTO1FBQzNCLG1CQUFtQixFQUFFLFNBQVM7UUFDOUIsb0JBQW9CLEVBQUUsU0FBUztRQUUvQixVQUFVLEVBQUUsU0FBUztRQUNyQixlQUFlLEVBQUUsU0FBUztRQUMxQixjQUFjLEVBQUUsU0FBUztRQUN6QixpQkFBaUIsRUFBRSxTQUFTO1FBQzVCLGtCQUFrQixFQUFFLFNBQVM7UUFFN0IsWUFBWSxFQUFFLFNBQVM7UUFDdkIsaUJBQWlCLEVBQUUsU0FBUztRQUM1QixnQkFBZ0IsRUFBRSxTQUFTO1FBQzNCLG1CQUFtQixFQUFFLFNBQVM7UUFDOUIsb0JBQW9CLEVBQUUsU0FBUztRQUUvQixTQUFTLEVBQUUsU0FBUztRQUNwQixjQUFjLEVBQUUsU0FBUztRQUN6QixhQUFhLEVBQUUsU0FBUztRQUN4QixnQkFBZ0IsRUFBRSxTQUFTO1FBRTNCLE9BQU87UUFDUCxXQUFXLEVBQUUsU0FBUztRQUN0QixhQUFhLEVBQUUsU0FBUztRQUN4QixZQUFZLEVBQUUsU0FBUztRQUN2QixZQUFZLEVBQUUsU0FBUztRQUV2QixhQUFhLEVBQUUsd0JBQXdCO1FBQ3ZDLGFBQWEsRUFBRSx3QkFBd0I7UUFDdkMsYUFBYSxFQUFFLHdCQUF3QjtRQUN2QyxhQUFhLEVBQUUsd0JBQXdCO1FBRXZDLGFBQWE7UUFDYixTQUFTLEVBQUUsU0FBUztRQUNwQixXQUFXLEVBQUUsU0FBUztRQUN0QixVQUFVLEVBQUUsU0FBUztRQUNyQixTQUFTLEVBQUUscUJBQXFCO1FBQ2hDLGNBQWMsRUFBRSxxQkFBcUI7UUFDckMsZ0JBQWdCLEVBQUUscUJBQXFCO1FBQ3ZDLGlCQUFpQixFQUFFLHFCQUFxQjtRQUV4QyxTQUFTO1FBQ1QsYUFBYSxFQUFFLFNBQVM7UUFDeEIsZUFBZSxFQUFFLFNBQVM7UUFDMUIsY0FBYyxFQUFFLFNBQVM7UUFDekIsV0FBVyxFQUFFLFNBQVM7UUFDdEIsZUFBZSxFQUFFLHFCQUFxQjtRQUN0QyxlQUFlLEVBQUUscUJBQXFCO1FBQ3RDLGVBQWUsRUFBRSxxQkFBcUI7UUFFdEMsVUFBVTtRQUNWLGFBQWEsRUFBRSxxQkFBcUI7UUFDcEMsZUFBZSxFQUFFLHFCQUFxQjtRQUN0QyxjQUFjLEVBQUUscUJBQXFCO1FBQ3JDLFdBQVcsRUFBRSxxQkFBcUI7UUFFbEMsU0FBUztRQUNULGVBQWUsRUFBRSxTQUFTO1FBQzFCLGlCQUFpQixFQUFFLFNBQVM7UUFDNUIsYUFBYSxFQUFFLFNBQVM7UUFDeEIsZUFBZSxFQUFFLFNBQVM7UUFDMUIsY0FBYyxFQUFFLFNBQVM7UUFDekIsY0FBYyxFQUFFLFNBQVM7UUFDekIsVUFBVSxFQUFFLFNBQVM7UUFDckIsZ0JBQWdCLEVBQUUsU0FBUztRQUMzQixxQkFBcUIsRUFBRSxTQUFTO1FBRWhDLE9BQU87UUFDUCxVQUFVLEVBQUUsU0FBUztRQUNyQixVQUFVLEVBQUUsU0FBUztRQUNyQixVQUFVLEVBQUUsU0FBUztRQUNyQixVQUFVLEVBQUUsU0FBUztRQUNyQixVQUFVLEVBQUUsU0FBUztRQUNyQixVQUFVLEVBQUUsU0FBUztRQUNyQixVQUFVLEVBQUUsU0FBUztRQUNyQixVQUFVLEVBQUUsU0FBUztRQUNyQixVQUFVLEVBQUUsU0FBUztLQUN0QixDQUFDO0FBQ0osQ0FBQyxFQS9NZ0IsYUFBYSxLQUFiLGFBQWEsUUErTTdCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IG5hbWVzcGFjZSBCcmFuZGluZ1R5cGVzIHtcblxuICBleHBvcnQgaW50ZXJmYWNlIFRoZW1lQ29sb3JzIHtcbiAgICAvLyBCcmFuZFxuICAgIGJyYW5kUHJpbWFyeTogc3RyaW5nO1xuICAgIGJyYW5kUHJpbWFyeUxpZ2h0OiBzdHJpbmc7XG4gICAgYnJhbmRQcmltYXJ5RGFyazogc3RyaW5nO1xuICAgIGJyYW5kUHJpbWFyeURhcmtlcjogc3RyaW5nO1xuICAgIGJyYW5kUHJpbWFyeUxpZ2h0ZXI6IHN0cmluZztcbiAgICBicmFuZFByaW1hcnlMaWdodGVzdDogc3RyaW5nO1xuICAgIGJyYW5kUHJpbWFyeUhvdmVyOiBzdHJpbmc7XG4gICAgYnJhbmRQcmltYXJ5QWN0aXZlOiBzdHJpbmc7XG5cbiAgICBicmFuZFNlY29uZGFyeTogc3RyaW5nO1xuICAgIGJyYW5kU2Vjb25kYXJ5TGlnaHQ6IHN0cmluZztcbiAgICBicmFuZFNlY29uZGFyeURhcms6IHN0cmluZztcbiAgICBicmFuZFNlY29uZGFyeUxpZ2h0ZXI6IHN0cmluZztcblxuICAgIGJyYW5kQWNjZW50OiBzdHJpbmc7XG4gICAgYnJhbmRBY2NlbnRMaWdodDogc3RyaW5nO1xuICAgIGJyYW5kQWNjZW50RGFyazogc3RyaW5nO1xuICAgIGJyYW5kQWNjZW50TGlnaHRlcjogc3RyaW5nO1xuXG4gICAgLy8gU2VtYW50aWNcbiAgICBicmFuZFN1Y2Nlc3M6IHN0cmluZztcbiAgICBicmFuZFN1Y2Nlc3NMaWdodDogc3RyaW5nO1xuICAgIGJyYW5kU3VjY2Vzc0Rhcms6IHN0cmluZztcbiAgICBicmFuZFN1Y2Nlc3NMaWdodGVyOiBzdHJpbmc7XG4gICAgYnJhbmRTdWNjZXNzTGlnaHRlc3Q6IHN0cmluZztcblxuICAgIGJyYW5kRXJyb3I6IHN0cmluZztcbiAgICBicmFuZEVycm9yTGlnaHQ6IHN0cmluZztcbiAgICBicmFuZEVycm9yRGFyazogc3RyaW5nO1xuICAgIGJyYW5kRXJyb3JMaWdodGVyOiBzdHJpbmc7XG4gICAgYnJhbmRFcnJvckxpZ2h0ZXN0OiBzdHJpbmc7XG5cbiAgICBicmFuZFdhcm5pbmc6IHN0cmluZztcbiAgICBicmFuZFdhcm5pbmdMaWdodDogc3RyaW5nO1xuICAgIGJyYW5kV2FybmluZ0Rhcms6IHN0cmluZztcbiAgICBicmFuZFdhcm5pbmdMaWdodGVyOiBzdHJpbmc7XG4gICAgYnJhbmRXYXJuaW5nTGlnaHRlc3Q6IHN0cmluZztcblxuICAgIGJyYW5kSW5mbzogc3RyaW5nO1xuICAgIGJyYW5kSW5mb0xpZ2h0OiBzdHJpbmc7XG4gICAgYnJhbmRJbmZvRGFyazogc3RyaW5nO1xuICAgIGJyYW5kSW5mb0xpZ2h0ZXI6IHN0cmluZztcblxuICAgIC8vIFRleHRcbiAgICB0ZXh0UHJpbWFyeTogc3RyaW5nO1xuICAgIHRleHRTZWNvbmRhcnk6IHN0cmluZztcbiAgICB0ZXh0VGVydGlhcnk6IHN0cmluZztcbiAgICB0ZXh0RGlzYWJsZWQ6IHN0cmluZztcblxuICAgIHRleHRQcmltYXJ5ODc6IHN0cmluZztcbiAgICB0ZXh0UHJpbWFyeTYwOiBzdHJpbmc7XG4gICAgdGV4dFByaW1hcnkzODogc3RyaW5nO1xuICAgIHRleHRQcmltYXJ5MTI6IHN0cmluZztcblxuICAgIC8vIEJhY2tncm91bmRcbiAgICBiZ1ByaW1hcnk6IHN0cmluZztcbiAgICBiZ1NlY29uZGFyeTogc3RyaW5nO1xuICAgIGJnVGVydGlhcnk6IHN0cmluZztcbiAgICBiZ092ZXJsYXk6IHN0cmluZztcbiAgICBiZ092ZXJsYXlMaWdodDogc3RyaW5nO1xuICAgIGJnT3ZlcmxheUxpZ2h0ZXI6IHN0cmluZztcbiAgICBiZ092ZXJsYXlMaWdodGVzdDogc3RyaW5nO1xuXG4gICAgLy8gQm9yZGVyXG4gICAgYm9yZGVyUHJpbWFyeTogc3RyaW5nO1xuICAgIGJvcmRlclNlY29uZGFyeTogc3RyaW5nO1xuICAgIGJvcmRlclRlcnRpYXJ5OiBzdHJpbmc7XG4gICAgYm9yZGVyTGlnaHQ6IHN0cmluZztcbiAgICBib3JkZXJQcmltYXJ5MTI6IHN0cmluZztcbiAgICBib3JkZXJQcmltYXJ5MDg6IHN0cmluZztcbiAgICBib3JkZXJQcmltYXJ5MDY6IHN0cmluZztcblxuICAgIC8vIFNoYWRvd3NcbiAgICBzaGFkb3dQcmltYXJ5OiBzdHJpbmc7XG4gICAgc2hhZG93U2Vjb25kYXJ5OiBzdHJpbmc7XG4gICAgc2hhZG93VGVydGlhcnk6IHN0cmluZztcbiAgICBzaGFkb3dMaWdodDogc3RyaW5nO1xuXG4gICAgLy8gU3RhdHVzXG4gICAgc3RhdHVzQXZhaWxhYmxlOiBzdHJpbmc7XG4gICAgc3RhdHVzVW5hdmFpbGFibGU6IHN0cmluZztcbiAgICBzdGF0dXNIb3RzZWF0OiBzdHJpbmc7XG4gICAgc3RhdHVzTXVsdGl0ZWFtOiBzdHJpbmc7XG4gICAgc3RhdHVzU2VsZWN0ZWQ6IHN0cmluZztcbiAgICBzdGF0dXNVcGNvbWluZzogc3RyaW5nO1xuICAgIHN0YXR1c1Jvb206IHN0cmluZztcbiAgICBzdGF0dXNSb29tQm9va2VkOiBzdHJpbmc7XG4gICAgc3RhdHVzUm9vbVVuYXZhaWxhYmxlOiBzdHJpbmc7XG5cbiAgICAvLyBUZWFtXG4gICAgdGVhbUNvbG9yMTogc3RyaW5nO1xuICAgIHRlYW1Db2xvcjI6IHN0cmluZztcbiAgICB0ZWFtQ29sb3IzOiBzdHJpbmc7XG4gICAgdGVhbUNvbG9yNDogc3RyaW5nO1xuICAgIHRlYW1Db2xvcjU6IHN0cmluZztcbiAgICB0ZWFtQ29sb3I2OiBzdHJpbmc7XG4gICAgdGVhbUNvbG9yNzogc3RyaW5nO1xuICAgIHRlYW1Db2xvcjg6IHN0cmluZztcbiAgICB0ZWFtQ29sb3I5OiBzdHJpbmc7XG4gIH1cbiAgXG4gIGV4cG9ydCBjb25zdCBkZWZhdWx0VGhlbWU6IFRoZW1lQ29sb3JzID0ge1xuICAgIC8vIEJyYW5kXG4gICAgYnJhbmRQcmltYXJ5OiBcIiMwOTM3QjJcIixcbiAgICBicmFuZFByaW1hcnlMaWdodDogXCIjM0M2OEQwXCIsXG4gICAgYnJhbmRQcmltYXJ5RGFyazogXCIjMDYyQTk5XCIsXG4gICAgYnJhbmRQcmltYXJ5RGFya2VyOiBcIiMwNDFGODBcIixcbiAgICBicmFuZFByaW1hcnlMaWdodGVyOiBcIiM2MzhGRTdcIixcbiAgICBicmFuZFByaW1hcnlMaWdodGVzdDogXCIjQ0JEREZCXCIsXG4gICAgYnJhbmRQcmltYXJ5SG92ZXI6IFwiI0YwRjNGQVwiLFxuICAgIGJyYW5kUHJpbWFyeUFjdGl2ZTogXCIjREFFMUYzXCIsXG4gIFxuICAgIGJyYW5kU2Vjb25kYXJ5OiBcIiNFRDcxMUNcIixcbiAgICBicmFuZFNlY29uZGFyeUxpZ2h0OiBcIiNGMDlFNjVcIixcbiAgICBicmFuZFNlY29uZGFyeURhcms6IFwiI0IyMzYwMFwiLFxuICAgIGJyYW5kU2Vjb25kYXJ5TGlnaHRlcjogXCIjRkZDNkYyXCIsXG4gIFxuICAgIGJyYW5kQWNjZW50OiBcIiMxMEFEQUVcIixcbiAgICBicmFuZEFjY2VudExpZ2h0OiBcIiMxNkNCQkNcIixcbiAgICBicmFuZEFjY2VudERhcms6IFwiIzAzNUY2QlwiLFxuICAgIGJyYW5kQWNjZW50TGlnaHRlcjogXCIjQUNEQURBXCIsXG4gIFxuICAgIC8vIFNlbWFudGljXG4gICAgYnJhbmRTdWNjZXNzOiBcIiMzOEFGNDlcIixcbiAgICBicmFuZFN1Y2Nlc3NMaWdodDogXCIjNENBRjUwXCIsXG4gICAgYnJhbmRTdWNjZXNzRGFyazogXCIjMjE2NTMxXCIsXG4gICAgYnJhbmRTdWNjZXNzTGlnaHRlcjogXCIjRTRGNUU5XCIsXG4gICAgYnJhbmRTdWNjZXNzTGlnaHRlc3Q6IFwiI0YxRkZGM1wiLFxuICBcbiAgICBicmFuZEVycm9yOiBcIiNCMDAwMjBcIixcbiAgICBicmFuZEVycm9yTGlnaHQ6IFwiI0YwNEU0RVwiLFxuICAgIGJyYW5kRXJyb3JEYXJrOiBcIiNBNjAwNjBcIixcbiAgICBicmFuZEVycm9yTGlnaHRlcjogXCIjRkFFMUVBXCIsXG4gICAgYnJhbmRFcnJvckxpZ2h0ZXN0OiBcIiNGREYyRjJcIixcbiAgXG4gICAgYnJhbmRXYXJuaW5nOiBcIiNGRjlEMDBcIixcbiAgICBicmFuZFdhcm5pbmdMaWdodDogXCIjRDQ5MDBDXCIsXG4gICAgYnJhbmRXYXJuaW5nRGFyazogXCIjNjI0MDAwXCIsXG4gICAgYnJhbmRXYXJuaW5nTGlnaHRlcjogXCIjRjRFN0MzXCIsXG4gICAgYnJhbmRXYXJuaW5nTGlnaHRlc3Q6IFwiI0ZBRUZFRFwiLFxuICBcbiAgICBicmFuZEluZm86IFwiIzAwOTFGRlwiLFxuICAgIGJyYW5kSW5mb0xpZ2h0OiBcIiMzNUExRkZcIixcbiAgICBicmFuZEluZm9EYXJrOiBcIiMwMDg3QjJcIixcbiAgICBicmFuZEluZm9MaWdodGVyOiBcIiNDRkVDRjlcIixcbiAgXG4gICAgLy8gVGV4dFxuICAgIHRleHRQcmltYXJ5OiBcIiMxODFGMzNcIixcbiAgICB0ZXh0U2Vjb25kYXJ5OiBcIiM2QTczN0RcIixcbiAgICB0ZXh0VGVydGlhcnk6IFwiIzkyOURBQlwiLFxuICAgIHRleHREaXNhYmxlZDogXCIjQzhDREQzXCIsXG4gIFxuICAgIHRleHRQcmltYXJ5ODc6IFwicmdiYSgyNCwgMzEsIDUxLCAwLjg3KVwiLFxuICAgIHRleHRQcmltYXJ5NjA6IFwicmdiYSgyNCwgMzEsIDUxLCAwLjYwKVwiLFxuICAgIHRleHRQcmltYXJ5Mzg6IFwicmdiYSgyNCwgMzEsIDUxLCAwLjM4KVwiLFxuICAgIHRleHRQcmltYXJ5MTI6IFwicmdiYSgyNCwgMzEsIDUxLCAwLjEyKVwiLFxuICBcbiAgICAvLyBCYWNrZ3JvdW5kXG4gICAgYmdQcmltYXJ5OiBcIiNGRkZGRkZcIixcbiAgICBiZ1NlY29uZGFyeTogXCIjRkFGQUZBXCIsXG4gICAgYmdUZXJ0aWFyeTogXCIjRjVGNUY1XCIsXG4gICAgYmdPdmVybGF5OiBcInJnYmEoMCwgMCwgMCwgMC4zMilcIixcbiAgICBiZ092ZXJsYXlMaWdodDogXCJyZ2JhKDAsIDAsIDAsIDAuMTIpXCIsXG4gICAgYmdPdmVybGF5TGlnaHRlcjogXCJyZ2JhKDAsIDAsIDAsIDAuMDgpXCIsXG4gICAgYmdPdmVybGF5TGlnaHRlc3Q6IFwicmdiYSgwLCAwLCAwLCAwLjA0KVwiLFxuICBcbiAgICAvLyBCb3JkZXJcbiAgICBib3JkZXJQcmltYXJ5OiBcIiNFMEUwRTBcIixcbiAgICBib3JkZXJTZWNvbmRhcnk6IFwiI0Q2RENFMlwiLFxuICAgIGJvcmRlclRlcnRpYXJ5OiBcIiNDOENERDNcIixcbiAgICBib3JkZXJMaWdodDogXCIjRjFGNEY4XCIsXG4gICAgYm9yZGVyUHJpbWFyeTEyOiBcInJnYmEoMCwgMCwgMCwgMC4xMilcIixcbiAgICBib3JkZXJQcmltYXJ5MDg6IFwicmdiYSgwLCAwLCAwLCAwLjA4KVwiLFxuICAgIGJvcmRlclByaW1hcnkwNjogXCJyZ2JhKDAsIDAsIDAsIDAuMDYpXCIsXG4gIFxuICAgIC8vIFNoYWRvd3NcbiAgICBzaGFkb3dQcmltYXJ5OiBcInJnYmEoMCwgMCwgMCwgMC4xMilcIixcbiAgICBzaGFkb3dTZWNvbmRhcnk6IFwicmdiYSgwLCAwLCAwLCAwLjA4KVwiLFxuICAgIHNoYWRvd1RlcnRpYXJ5OiBcInJnYmEoMCwgMCwgMCwgMC4wNClcIixcbiAgICBzaGFkb3dMaWdodDogXCJyZ2JhKDAsIDAsIDAsIDAuMDYpXCIsXG4gIFxuICAgIC8vIFN0YXR1c1xuICAgIHN0YXR1c0F2YWlsYWJsZTogXCIjOTI5REFCXCIsXG4gICAgc3RhdHVzVW5hdmFpbGFibGU6IFwiI0NDRDNEQVwiLFxuICAgIHN0YXR1c0hvdHNlYXQ6IFwiIzg1N0JGRlwiLFxuICAgIHN0YXR1c011bHRpdGVhbTogXCIjMTBBREFFXCIsXG4gICAgc3RhdHVzU2VsZWN0ZWQ6IFwiIzEwQURBRVwiLFxuICAgIHN0YXR1c1VwY29taW5nOiBcIiNENDkwMENcIixcbiAgICBzdGF0dXNSb29tOiBcIiMzOEFGNDlcIixcbiAgICBzdGF0dXNSb29tQm9va2VkOiBcIiNCMjM2MDBcIixcbiAgICBzdGF0dXNSb29tVW5hdmFpbGFibGU6IFwiIzE4MUYzM1wiLFxuICBcbiAgICAvLyBUZWFtXG4gICAgdGVhbUNvbG9yMTogXCIjRjhDNTJFXCIsXG4gICAgdGVhbUNvbG9yMjogXCIjRkE4RTIwXCIsXG4gICAgdGVhbUNvbG9yMzogXCIjOTg3Q0REXCIsXG4gICAgdGVhbUNvbG9yNDogXCIjMTZDQkJDXCIsXG4gICAgdGVhbUNvbG9yNTogXCIjRTY1MDEwXCIsXG4gICAgdGVhbUNvbG9yNjogXCIjQTYwMDYwXCIsXG4gICAgdGVhbUNvbG9yNzogXCIjRUQzMjNCXCIsXG4gICAgdGVhbUNvbG9yODogXCIjMzVBMUZGXCIsXG4gICAgdGVhbUNvbG9yOTogXCIjODBEMzQ4XCIsXG4gIH07XG59Il19
@@ -0,0 +1,25 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { DynamicThemeService } from './dynamic-theme.service';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./dynamic-theme.service";
5
+ export class DynamicThemeModule {
6
+ constructor(themeService) {
7
+ this.themeService = themeService;
8
+ // Initialize the theme service when module is loaded
9
+ // This ensures the default theme is applied
10
+ }
11
+ static { this.ɵfac = function DynamicThemeModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DynamicThemeModule)(i0.ɵɵinject(i1.DynamicThemeService)); }; }
12
+ static { this.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: DynamicThemeModule }); }
13
+ static { this.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [
14
+ DynamicThemeService
15
+ ] }); }
16
+ }
17
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DynamicThemeModule, [{
18
+ type: NgModule,
19
+ args: [{
20
+ providers: [
21
+ DynamicThemeService
22
+ ]
23
+ }]
24
+ }], () => [{ type: i1.DynamicThemeService }], null); })();
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10aGVtZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9keW5hbWljLXRoZW1lL2R5bmFtaWMtdGhlbWUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQU85RCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFlBQW9CLFlBQWlDO1FBQWpDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNuRCxxREFBcUQ7UUFDckQsNENBQTRDO0lBQzlDLENBQUM7bUhBSlUsa0JBQWtCO21FQUFsQixrQkFBa0I7d0VBSmxCO1lBQ1QsbUJBQW1CO1NBQ3BCOztpRkFFVSxrQkFBa0I7Y0FMOUIsUUFBUTtlQUFDO2dCQUNSLFNBQVMsRUFBRTtvQkFDVCxtQkFBbUI7aUJBQ3BCO2FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHluYW1pY1RoZW1lU2VydmljZSB9IGZyb20gJy4vZHluYW1pYy10aGVtZS5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgcHJvdmlkZXJzOiBbXG4gICAgRHluYW1pY1RoZW1lU2VydmljZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNUaGVtZU1vZHVsZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGhlbWVTZXJ2aWNlOiBEeW5hbWljVGhlbWVTZXJ2aWNlKSB7XG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgdGhlbWUgc2VydmljZSB3aGVuIG1vZHVsZSBpcyBsb2FkZWRcbiAgICAvLyBUaGlzIGVuc3VyZXMgdGhlIGRlZmF1bHQgdGhlbWUgaXMgYXBwbGllZFxuICB9XG59XG4iXX0=
@@ -0,0 +1,193 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import { BrandingTypes } from './branding.types';
4
+ import * as i0 from "@angular/core";
5
+ export class DynamicThemeService {
6
+ constructor() {
7
+ this.currentThemeSubject = new BehaviorSubject(BrandingTypes.defaultTheme);
8
+ this.currentTheme$ = this.currentThemeSubject.asObservable();
9
+ // Initialize with default theme on service creation
10
+ this.applyTheme(BrandingTypes.defaultTheme);
11
+ }
12
+ /**
13
+ * Apply a complete theme configuration to the root element
14
+ * @param theme - ThemeColors object containing all color values
15
+ */
16
+ applyTheme(theme) {
17
+ const root = document.documentElement;
18
+ Object.entries(theme).forEach(([camelName, value]) => {
19
+ const cssVar = `--${this.camelToKebabCase(camelName)}`;
20
+ root.style.setProperty(cssVar, String(value));
21
+ });
22
+ // Update the current theme subject
23
+ this.currentThemeSubject.next(theme);
24
+ }
25
+ /**
26
+ * Apply partial theme updates (only specified colors will be updated)
27
+ * @param partialTheme - Partial ThemeColors object with only the colors to update
28
+ */
29
+ applyPartialTheme(partialTheme) {
30
+ const root = document.documentElement;
31
+ Object.entries(partialTheme).forEach(([camelName, value]) => {
32
+ if (value !== undefined) {
33
+ const cssVar = `--${this.camelToKebabCase(camelName)}`;
34
+ root.style.setProperty(cssVar, String(value));
35
+ }
36
+ });
37
+ // Update the current theme with merged values
38
+ const currentTheme = this.currentThemeSubject.value;
39
+ const updatedTheme = { ...currentTheme, ...partialTheme };
40
+ this.currentThemeSubject.next(updatedTheme);
41
+ }
42
+ /**
43
+ * Set a single color property
44
+ * @param colorKey - The camelCase key of the color property
45
+ * @param colorValue - The color value (hex, rgb, rgba, etc.)
46
+ */
47
+ setColorProperty(colorKey, colorValue) {
48
+ const root = document.documentElement;
49
+ const cssVar = `--${this.camelToKebabCase(colorKey)}`;
50
+ root.style.setProperty(cssVar, colorValue);
51
+ // Update the current theme
52
+ const currentTheme = this.currentThemeSubject.value;
53
+ const updatedTheme = { ...currentTheme, [colorKey]: colorValue };
54
+ this.currentThemeSubject.next(updatedTheme);
55
+ }
56
+ /**
57
+ * Get the current theme colors
58
+ * @returns Current ThemeColors object
59
+ */
60
+ getCurrentTheme() {
61
+ return this.currentThemeSubject.value;
62
+ }
63
+ /**
64
+ * Get a specific color value from the current theme
65
+ * @param colorKey - The camelCase key of the color property
66
+ * @returns The color value as string
67
+ */
68
+ getColorProperty(colorKey) {
69
+ return this.currentThemeSubject.value[colorKey];
70
+ }
71
+ /**
72
+ * Reset theme to default values
73
+ */
74
+ resetToDefault() {
75
+ this.applyTheme(BrandingTypes.defaultTheme);
76
+ }
77
+ /**
78
+ * Remove a specific CSS custom property from the root element
79
+ * @param colorKey - The camelCase key of the color property to remove
80
+ */
81
+ removeColorProperty(colorKey) {
82
+ const root = document.documentElement;
83
+ const cssVar = `--${this.camelToKebabCase(colorKey)}`;
84
+ root.style.removeProperty(cssVar);
85
+ }
86
+ /**
87
+ * Get all CSS custom properties currently set on the root element
88
+ * @returns Object with CSS variable names as keys and their values
89
+ */
90
+ getAllCSSVariables() {
91
+ const root = document.documentElement;
92
+ const computedStyle = getComputedStyle(root);
93
+ const cssVars = {};
94
+ // Get all CSS custom properties that start with our prefix
95
+ for (let i = 0; i < computedStyle.length; i++) {
96
+ const property = computedStyle[i];
97
+ if (property.startsWith('--brand-') ||
98
+ property.startsWith('--text-') ||
99
+ property.startsWith('--bg-') ||
100
+ property.startsWith('--border-') ||
101
+ property.startsWith('--shadow-') ||
102
+ property.startsWith('--status-') ||
103
+ property.startsWith('--team-color-')) {
104
+ cssVars[property] = computedStyle.getPropertyValue(property).trim();
105
+ }
106
+ }
107
+ return cssVars;
108
+ }
109
+ /**
110
+ * Apply theme with validation
111
+ * @param theme - ThemeColors object to validate and apply
112
+ * @returns boolean indicating if the theme was successfully applied
113
+ */
114
+ applyThemeWithValidation(theme) {
115
+ try {
116
+ // Basic validation - check if all required properties exist
117
+ const requiredKeys = Object.keys(BrandingTypes.defaultTheme);
118
+ const themeKeys = Object.keys(theme);
119
+ const missingKeys = requiredKeys.filter(key => !themeKeys.includes(key));
120
+ if (missingKeys.length > 0) {
121
+ console.warn('DynamicThemeService: Missing theme properties:', missingKeys);
122
+ // Apply with default values for missing keys
123
+ const completeTheme = { ...BrandingTypes.defaultTheme, ...theme };
124
+ this.applyTheme(completeTheme);
125
+ return false;
126
+ }
127
+ this.applyTheme(theme);
128
+ return true;
129
+ }
130
+ catch (error) {
131
+ console.error('DynamicThemeService: Error applying theme:', error);
132
+ return false;
133
+ }
134
+ }
135
+ /**
136
+ * Convert camelCase to kebab-case for CSS custom properties
137
+ * @param camelCase - The camelCase string to convert
138
+ * @returns kebab-case string
139
+ */
140
+ camelToKebabCase(camelCase) {
141
+ return camelCase.replace(/([A-Z])/g, '-$1').toLowerCase();
142
+ }
143
+ /**
144
+ * Convert kebab-case to camelCase
145
+ * @param kebabCase - The kebab-case string to convert
146
+ * @returns camelCase string
147
+ */
148
+ kebabToCamelCase(kebabCase) {
149
+ return kebabCase.replace(/-([a-z])/g, (match, letter) => letter.toUpperCase());
150
+ }
151
+ /**
152
+ * Create a theme preset from current applied theme
153
+ * @param presetName - Name for the theme preset
154
+ * @returns Theme preset object
155
+ */
156
+ createThemePreset(presetName) {
157
+ return {
158
+ name: presetName,
159
+ theme: { ...this.getCurrentTheme() }
160
+ };
161
+ }
162
+ /**
163
+ * Export current theme as JSON string
164
+ * @returns JSON string representation of current theme
165
+ */
166
+ exportThemeAsJSON() {
167
+ return JSON.stringify(this.getCurrentTheme(), null, 2);
168
+ }
169
+ /**
170
+ * Import theme from JSON string
171
+ * @param jsonString - JSON string representation of theme
172
+ * @returns boolean indicating success
173
+ */
174
+ importThemeFromJSON(jsonString) {
175
+ try {
176
+ const theme = JSON.parse(jsonString);
177
+ return this.applyThemeWithValidation(theme);
178
+ }
179
+ catch (error) {
180
+ console.error('DynamicThemeService: Error importing theme from JSON:', error);
181
+ return false;
182
+ }
183
+ }
184
+ static { this.ɵfac = function DynamicThemeService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DynamicThemeService)(); }; }
185
+ static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: DynamicThemeService, factory: DynamicThemeService.ɵfac, providedIn: 'root' }); }
186
+ }
187
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DynamicThemeService, [{
188
+ type: Injectable,
189
+ args: [{
190
+ providedIn: 'root'
191
+ }]
192
+ }], () => [], null); })();
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10aGVtZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZHluYW1pYy10aGVtZS9keW5hbWljLXRoZW1lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFLakQsTUFBTSxPQUFPLG1CQUFtQjtJQUk5QjtRQUhRLHdCQUFtQixHQUFHLElBQUksZUFBZSxDQUE0QixhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEcsa0JBQWEsR0FBMEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBR3BHLG9EQUFvRDtRQUNwRCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsVUFBVSxDQUFDLEtBQWdDO1FBQ3pDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7UUFFdEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQ25ELE1BQU0sTUFBTSxHQUFHLEtBQUssSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO1FBRUgsbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FB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QyxDQUFDO1FBQzlDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyx1REFBdUQsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM5RSxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO29IQXpNVSxtQkFBbUI7dUVBQW5CLG1CQUFtQixXQUFuQixtQkFBbUIsbUJBRmxCLE1BQU07O2lGQUVQLG1CQUFtQjtjQUgvQixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJyYW5kaW5nVHlwZXMgfSBmcm9tICcuL2JyYW5kaW5nLnR5cGVzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY1RoZW1lU2VydmljZSB7XG4gIHByaXZhdGUgY3VycmVudFRoZW1lU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QnJhbmRpbmdUeXBlcy5UaGVtZUNvbG9ycz4oQnJhbmRpbmdUeXBlcy5kZWZhdWx0VGhlbWUpO1xuICBwdWJsaWMgY3VycmVudFRoZW1lJDogT2JzZXJ2YWJsZTxCcmFuZGluZ1R5cGVzLlRoZW1lQ29sb3JzPiA9IHRoaXMuY3VycmVudFRoZW1lU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBJbml0aWFsaXplIHdpdGggZGVmYXVsdCB0aGVtZSBvbiBzZXJ2aWNlIGNyZWF0aW9uXG4gICAgdGhpcy5hcHBseVRoZW1lKEJyYW5kaW5nVHlwZXMuZGVmYXVsdFRoZW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSBhIGNvbXBsZXRlIHRoZW1lIGNvbmZpZ3VyYXRpb24gdG8gdGhlIHJvb3QgZWxlbWVudFxuICAgKiBAcGFyYW0gdGhlbWUgLSBUaGVtZUNvbG9ycyBvYmplY3QgY29udGFpbmluZyBhbGwgY29sb3IgdmFsdWVzXG4gICAqL1xuICBhcHBseVRoZW1lKHRoZW1lOiBCcmFuZGluZ1R5cGVzLlRoZW1lQ29sb3JzKTogdm9pZCB7XG4gICAgY29uc3Qgcm9vdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBcbiAgICBPYmplY3QuZW50cmllcyh0aGVtZSkuZm9yRWFjaCgoW2NhbWVsTmFtZSwgdmFsdWVdKSA9PiB7XG4gICAgICBjb25zdCBjc3NWYXIgPSBgLS0ke3RoaXMuY2FtZWxUb0tlYmFiQ2FzZShjYW1lbE5hbWUpfWA7XG4gICAgICByb290LnN0eWxlLnNldFByb3BlcnR5KGNzc1ZhciwgU3RyaW5nKHZhbHVlKSk7XG4gICAgfSk7XG5cbiAgICAvLyBVcGRhdGUgdGhlIGN1cnJlbnQgdGhlbWUgc3ViamVjdFxuICAgIHRoaXMuY3VycmVudFRoZW1lU3ViamVjdC5uZXh0KHRoZW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSBwYXJ0aWFsIHRoZW1lIHVwZGF0ZXMgKG9ubHkgc3BlY2lmaWVkIGNvbG9ycyB3aWxsIGJlIHVwZGF0ZWQpXG4gICAqIEBwYXJhbSBwYXJ0aWFsVGhlbWUgLSBQYXJ0aWFsIFRoZW1lQ29sb3JzIG9iamVjdCB3aXRoIG9ubHkgdGhlIGNvbG9ycyB0byB1cGRhdGVcbiAgICovXG4gIGFwcGx5UGFydGlhbFRoZW1lKHBhcnRpYWxUaGVtZTogUGFydGlhbDxCcmFuZGluZ1R5cGVzLlRoZW1lQ29sb3JzPik6IHZvaWQge1xuICAgIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgXG4gICAgT2JqZWN0LmVudHJpZXMocGFydGlhbFRoZW1lKS5mb3JFYWNoKChbY2FtZWxOYW1lLCB2YWx1ZV0pID0+IHtcbiAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGNzc1ZhciA9IGAtLSR7dGhpcy5jYW1lbFRvS2ViYWJDYXNlKGNhbWVsTmFtZSl9YDtcbiAgICAgICAgcm9vdC5zdHlsZS5zZXRQcm9wZXJ0eShjc3NWYXIsIFN0cmluZyh2YWx1ZSkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gVXBkYXRlIHRoZSBjdXJyZW50IHRoZW1lIHdpdGggbWVyZ2VkIHZhbHVlc1xuICAgIGNvbnN0IGN1cnJlbnRUaGVtZSA9IHRoaXMuY3VycmVudFRoZW1lU3ViamVjdC52YWx1ZTtcbiAgICBjb25zdCB1cGRhdGVkVGhlbWUgPSB7IC4uLmN1cnJlbnRUaGVtZSwgLi4ucGFydGlhbFRoZW1lIH07XG4gICAgdGhpcy5jdXJyZW50VGhlbWVTdWJqZWN0Lm5leHQodXBkYXRlZFRoZW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgYSBzaW5nbGUgY29sb3IgcHJvcGVydHlcbiAgICogQHBhcmFtIGNvbG9yS2V5IC0gVGhlIGNhbWVsQ2FzZSBrZXkgb2YgdGhlIGNvbG9yIHByb3BlcnR5XG4gICAqIEBwYXJhbSBjb2xvclZhbHVlIC0gVGhlIGNvbG9yIHZhbHVlIChoZXgsIHJnYiwgcmdiYSwgZXRjLilcbiAgICovXG4gIHNldENvbG9yUHJvcGVydHkoY29sb3JLZXk6IGtleW9mIEJyYW5kaW5nVHlwZXMuVGhlbWVDb2xvcnMsIGNvbG9yVmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgY29uc3QgY3NzVmFyID0gYC0tJHt0aGlzLmNhbWVsVG9LZWJhYkNhc2UoY29sb3JLZXkpfWA7XG4gICAgcm9vdC5zdHlsZS5zZXRQcm9wZXJ0eShjc3NWYXIsIGNvbG9yVmFsdWUpO1xuXG4gICAgLy8gVXBkYXRlIHRoZSBjdXJyZW50IHRoZW1lXG4gICAgY29uc3QgY3VycmVudFRoZW1lID0gdGhpcy5jdXJyZW50VGhlbWVTdWJqZWN0LnZhbHVlO1xuICAgIGNvbnN0IHVwZGF0ZWRUaGVtZSA9IHsgLi4uY3VycmVudFRoZW1lLCBbY29sb3JLZXldOiBjb2xvclZhbHVlIH07XG4gICAgdGhpcy5jdXJyZW50VGhlbWVTdWJqZWN0Lm5leHQodXBkYXRlZFRoZW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgdGhlbWUgY29sb3JzXG4gICAqIEByZXR1cm5zIEN1cnJlbnQgVGhlbWVDb2xvcnMgb2JqZWN0XG4gICAqL1xuICBnZXRDdXJyZW50VGhlbWUoKTogQnJhbmRpbmdUeXBlcy5UaGVtZUNvbG9ycyB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFRoZW1lU3ViamVjdC52YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzcGVjaWZpYyBjb2xvciB2YWx1ZSBmcm9tIHRoZSBjdXJyZW50IHRoZW1lXG4gICAqIEBwYXJhbSBjb2xvcktleSAtIFRoZSBjYW1lbENhc2Uga2V5IG9mIHRoZSBjb2xvciBwcm9wZXJ0eVxuICAgKiBAcmV0dXJucyBUaGUgY29sb3IgdmFsdWUgYXMgc3RyaW5nXG4gICAqL1xuICBnZXRDb2xvclByb3BlcnR5KGNvbG9yS2V5OiBrZXlvZiBCcmFuZGluZ1R5cGVzLlRoZW1lQ29sb3JzKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50VGhlbWVTdWJqZWN0LnZhbHVlW2NvbG9yS2V5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGVtZSB0byBkZWZhdWx0IHZhbHVlc1xuICAgKi9cbiAgcmVzZXRUb0RlZmF1bHQoKTogdm9pZCB7XG4gICAgdGhpcy5hcHBseVRoZW1lKEJyYW5kaW5nVHlwZXMuZGVmYXVsdFRoZW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYSBzcGVjaWZpYyBDU1MgY3VzdG9tIHByb3BlcnR5IGZyb20gdGhlIHJvb3QgZWxlbWVudFxuICAgKiBAcGFyYW0gY29sb3JLZXkgLSBUaGUgY2FtZWxDYXNlIGtleSBvZiB0aGUgY29sb3IgcHJvcGVydHkgdG8gcmVtb3ZlXG4gICAqL1xuICByZW1vdmVDb2xvclByb3BlcnR5KGNvbG9yS2V5OiBrZXlvZiBCcmFuZGluZ1R5cGVzLlRoZW1lQ29sb3JzKTogdm9pZCB7XG4gICAgY29uc3Qgcm9vdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBjb25zdCBjc3NWYXIgPSBgLS0ke3RoaXMuY2FtZWxUb0tlYmFiQ2FzZShjb2xvcktleSl9YDtcbiAgICByb290LnN0eWxlLnJlbW92ZVByb3BlcnR5KGNzc1Zhcik7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCBDU1MgY3VzdG9tIHByb3BlcnRpZXMgY3VycmVudGx5IHNldCBvbiB0aGUgcm9vdCBlbGVtZW50XG4gICAqIEByZXR1cm5zIE9iamVjdCB3aXRoIENTUyB2YXJpYWJsZSBuYW1lcyBhcyBrZXlzIGFuZCB0aGVpciB2YWx1ZXNcbiAgICovXG4gIGdldEFsbENTU1ZhcmlhYmxlcygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKHJvb3QpO1xuICAgIGNvbnN0IGNzc1ZhcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICAgIC8vIEdldCBhbGwgQ1NTIGN1c3RvbSBwcm9wZXJ0aWVzIHRoYXQgc3RhcnQgd2l0aCBvdXIgcHJlZml4XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb21wdXRlZFN0eWxlLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IGNvbXB1dGVkU3R5bGVbaV07XG4gICAgICBpZiAocHJvcGVydHkuc3RhcnRzV2l0aCgnLS1icmFuZC0nKSB8fCBcbiAgICAgICAgICBwcm9wZXJ0eS5zdGFydHNXaXRoKCctLXRleHQtJykgfHwgXG4gICAgICAgICAgcHJvcGVydHkuc3RhcnRzV2l0aCgnLS1iZy0nKSB8fCBcbiAgICAgICAgICBwcm9wZXJ0eS5zdGFydHNXaXRoKCctLWJvcmRlci0nKSB8fCBcbiAgICAgICAgICBwcm9wZXJ0eS5zdGFydHNXaXRoKCctLXNoYWRvdy0nKSB8fCBcbiAgICAgICAgICBwcm9wZXJ0eS5zdGFydHNXaXRoKCctLXN0YXR1cy0nKSB8fCBcbiAgICAgICAgICBwcm9wZXJ0eS5zdGFydHNXaXRoKCctLXRlYW0tY29sb3ItJykpIHtcbiAgICAgICAgY3NzVmFyc1twcm9wZXJ0eV0gPSBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUocHJvcGVydHkpLnRyaW0oKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY3NzVmFycztcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSB0aGVtZSB3aXRoIHZhbGlkYXRpb25cbiAgICogQHBhcmFtIHRoZW1lIC0gVGhlbWVDb2xvcnMgb2JqZWN0IHRvIHZhbGlkYXRlIGFuZCBhcHBseVxuICAgKiBAcmV0dXJucyBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHRoZW1lIHdhcyBzdWNjZXNzZnVsbHkgYXBwbGllZFxuICAgKi9cbiAgYXBwbHlUaGVtZVdpdGhWYWxpZGF0aW9uKHRoZW1lOiBCcmFuZGluZ1R5cGVzLlRoZW1lQ29sb3JzKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEJhc2ljIHZhbGlkYXRpb24gLSBjaGVjayBpZiBhbGwgcmVxdWlyZWQgcHJvcGVydGllcyBleGlzdFxuICAgICAgY29uc3QgcmVxdWlyZWRLZXlzID0gT2JqZWN0LmtleXMoQnJhbmRpbmdUeXBlcy5kZWZhdWx0VGhlbWUpIGFzIChrZXlvZiBCcmFuZGluZ1R5cGVzLlRoZW1lQ29sb3JzKVtdO1xuICAgICAgY29uc3QgdGhlbWVLZXlzID0gT2JqZWN0LmtleXModGhlbWUpIGFzIChrZXlvZiBCcmFuZGluZ1R5cGVzLlRoZW1lQ29sb3JzKVtdO1xuICAgICAgXG4gICAgICBjb25zdCBtaXNzaW5nS2V5cyA9IHJlcXVpcmVkS2V5cy5maWx0ZXIoa2V5ID0+ICF0aGVtZUtleXMuaW5jbHVkZXMoa2V5KSk7XG4gICAgICBcbiAgICAgIGlmIChtaXNzaW5nS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignRHluYW1pY1RoZW1lU2VydmljZTogTWlzc2luZyB0aGVtZSBwcm9wZXJ0aWVzOicsIG1pc3NpbmdLZXlzKTtcbiAgICAgICAgLy8gQXBwbHkgd2l0aCBkZWZhdWx0IHZhbHVlcyBmb3IgbWlzc2luZyBrZXlzXG4gICAgICAgIGNvbnN0IGNvbXBsZXRlVGhlbWUgPSB7IC4uLkJyYW5kaW5nVHlwZXMuZGVmYXVsdFRoZW1lLCAuLi50aGVtZSB9O1xuICAgICAgICB0aGlzLmFwcGx5VGhlbWUoY29tcGxldGVUaGVtZSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5hcHBseVRoZW1lKHRoZW1lKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdEeW5hbWljVGhlbWVTZXJ2aWNlOiBFcnJvciBhcHBseWluZyB0aGVtZTonLCBlcnJvcik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgY2FtZWxDYXNlIHRvIGtlYmFiLWNhc2UgZm9yIENTUyBjdXN0b20gcHJvcGVydGllc1xuICAgKiBAcGFyYW0gY2FtZWxDYXNlIC0gVGhlIGNhbWVsQ2FzZSBzdHJpbmcgdG8gY29udmVydFxuICAgKiBAcmV0dXJucyBrZWJhYi1jYXNlIHN0cmluZ1xuICAgKi9cbiAgcHJpdmF0ZSBjYW1lbFRvS2ViYWJDYXNlKGNhbWVsQ2FzZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY2FtZWxDYXNlLnJlcGxhY2UoLyhbQS1aXSkvZywgJy0kMScpLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBrZWJhYi1jYXNlIHRvIGNhbWVsQ2FzZVxuICAgKiBAcGFyYW0ga2ViYWJDYXNlIC0gVGhlIGtlYmFiLWNhc2Ugc3RyaW5nIHRvIGNvbnZlcnRcbiAgICogQHJldHVybnMgY2FtZWxDYXNlIHN0cmluZ1xuICAgKi9cbiAgcHJpdmF0ZSBrZWJhYlRvQ2FtZWxDYXNlKGtlYmFiQ2FzZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4ga2ViYWJDYXNlLnJlcGxhY2UoLy0oW2Etel0pL2csIChtYXRjaCwgbGV0dGVyKSA9PiBsZXR0ZXIudG9VcHBlckNhc2UoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgdGhlbWUgcHJlc2V0IGZyb20gY3VycmVudCBhcHBsaWVkIHRoZW1lXG4gICAqIEBwYXJhbSBwcmVzZXROYW1lIC0gTmFtZSBmb3IgdGhlIHRoZW1lIHByZXNldFxuICAgKiBAcmV0dXJucyBUaGVtZSBwcmVzZXQgb2JqZWN0XG4gICAqL1xuICBjcmVhdGVUaGVtZVByZXNldChwcmVzZXROYW1lOiBzdHJpbmcpOiB7IG5hbWU6IHN0cmluZzsgdGhlbWU6IEJyYW5kaW5nVHlwZXMuVGhlbWVDb2xvcnMgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHByZXNldE5hbWUsXG4gICAgICB0aGVtZTogeyAuLi50aGlzLmdldEN1cnJlbnRUaGVtZSgpIH1cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cG9ydCBjdXJyZW50IHRoZW1lIGFzIEpTT04gc3RyaW5nXG4gICAqIEByZXR1cm5zIEpTT04gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGN1cnJlbnQgdGhlbWVcbiAgICovXG4gIGV4cG9ydFRoZW1lQXNKU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuZ2V0Q3VycmVudFRoZW1lKCksIG51bGwsIDIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCB0aGVtZSBmcm9tIEpTT04gc3RyaW5nXG4gICAqIEBwYXJhbSBqc29uU3RyaW5nIC0gSlNPTiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlbWVcbiAgICogQHJldHVybnMgYm9vbGVhbiBpbmRpY2F0aW5nIHN1Y2Nlc3NcbiAgICovXG4gIGltcG9ydFRoZW1lRnJvbUpTT04oanNvblN0cmluZzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRoZW1lID0gSlNPTi5wYXJzZShqc29uU3RyaW5nKSBhcyBCcmFuZGluZ1R5cGVzLlRoZW1lQ29sb3JzO1xuICAgICAgcmV0dXJuIHRoaXMuYXBwbHlUaGVtZVdpdGhWYWxpZGF0aW9uKHRoZW1lKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRHluYW1pY1RoZW1lU2VydmljZTogRXJyb3IgaW1wb3J0aW5nIHRoZW1lIGZyb20gSlNPTjonLCBlcnJvcik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from "./public_api";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9keW5hbWljLXRoZW1lL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vcHVibGljX2FwaVwiOyJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzLWNyeXN0YWwtZGVzaWduLXN5c3RlbS1keW5hbWljLXRoZW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZHluYW1pYy10aGVtZS9taXMtY3J5c3RhbC1kZXNpZ24tc3lzdGVtLWR5bmFtaWMtdGhlbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -0,0 +1,4 @@
1
+ export { BrandingTypes } from './branding.types';
2
+ export { DynamicThemeService } from './dynamic-theme.service';
3
+ export { DynamicThemeModule } from './dynamic-theme.module';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2R5bmFtaWMtdGhlbWUvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBCcmFuZGluZ1R5cGVzIH0gZnJvbSAnLi9icmFuZGluZy50eXBlcyc7XG5leHBvcnQgeyBEeW5hbWljVGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi9keW5hbWljLXRoZW1lLnNlcnZpY2UnO1xuZXhwb3J0IHsgRHluYW1pY1RoZW1lTW9kdWxlIH0gZnJvbSAnLi9keW5hbWljLXRoZW1lLm1vZHVsZSc7Il19