@cute-widgets/base 20.0.4 → 21.0.0

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 (171) hide show
  1. package/CHANGELOG.md +18 -6
  2. package/fesm2022/cute-widgets-base-abstract.mjs +19 -29
  3. package/fesm2022/cute-widgets-base-abstract.mjs.map +1 -1
  4. package/fesm2022/cute-widgets-base-alert.mjs +10 -10
  5. package/fesm2022/cute-widgets-base-alert.mjs.map +1 -1
  6. package/fesm2022/cute-widgets-base-autocomplete.mjs +14 -14
  7. package/fesm2022/cute-widgets-base-autocomplete.mjs.map +1 -1
  8. package/fesm2022/cute-widgets-base-badge.mjs +46 -14
  9. package/fesm2022/cute-widgets-base-badge.mjs.map +1 -1
  10. package/fesm2022/cute-widgets-base-bottom-sheet.mjs +11 -11
  11. package/fesm2022/cute-widgets-base-bottom-sheet.mjs.map +1 -1
  12. package/fesm2022/cute-widgets-base-button-toggle.mjs +61 -37
  13. package/fesm2022/cute-widgets-base-button-toggle.mjs.map +1 -1
  14. package/fesm2022/cute-widgets-base-button.mjs +176 -112
  15. package/fesm2022/cute-widgets-base-button.mjs.map +1 -1
  16. package/fesm2022/cute-widgets-base-card.mjs +40 -40
  17. package/fesm2022/cute-widgets-base-card.mjs.map +1 -1
  18. package/fesm2022/cute-widgets-base-checkbox.mjs +28 -28
  19. package/fesm2022/cute-widgets-base-checkbox.mjs.map +1 -1
  20. package/fesm2022/cute-widgets-base-chips.mjs +49 -61
  21. package/fesm2022/cute-widgets-base-chips.mjs.map +1 -1
  22. package/fesm2022/cute-widgets-base-collapse.mjs +120 -132
  23. package/fesm2022/cute-widgets-base-collapse.mjs.map +1 -1
  24. package/fesm2022/cute-widgets-base-core-datetime.mjs +11 -11
  25. package/fesm2022/cute-widgets-base-core-datetime.mjs.map +1 -1
  26. package/fesm2022/cute-widgets-base-core-directives.mjs +21 -21
  27. package/fesm2022/cute-widgets-base-core-directives.mjs.map +1 -1
  28. package/fesm2022/cute-widgets-base-core-error.mjs +6 -6
  29. package/fesm2022/cute-widgets-base-core-error.mjs.map +1 -1
  30. package/fesm2022/cute-widgets-base-core-layout.mjs +13 -1
  31. package/fesm2022/cute-widgets-base-core-layout.mjs.map +1 -1
  32. package/fesm2022/cute-widgets-base-core-line.mjs +7 -7
  33. package/fesm2022/cute-widgets-base-core-line.mjs.map +1 -1
  34. package/fesm2022/cute-widgets-base-core-nav.mjs +30 -28
  35. package/fesm2022/cute-widgets-base-core-nav.mjs.map +1 -1
  36. package/fesm2022/cute-widgets-base-core-observers.mjs +16 -16
  37. package/fesm2022/cute-widgets-base-core-observers.mjs.map +1 -1
  38. package/fesm2022/cute-widgets-base-core-option.mjs +10 -10
  39. package/fesm2022/cute-widgets-base-core-option.mjs.map +1 -1
  40. package/fesm2022/cute-widgets-base-core-pipes.mjs +6 -6
  41. package/fesm2022/cute-widgets-base-core-pipes.mjs.map +1 -1
  42. package/fesm2022/cute-widgets-base-core-ripple.mjs +3 -3
  43. package/fesm2022/cute-widgets-base-core-ripple.mjs.map +1 -1
  44. package/fesm2022/cute-widgets-base-core-theming.mjs +7 -7
  45. package/fesm2022/cute-widgets-base-core-theming.mjs.map +1 -1
  46. package/fesm2022/cute-widgets-base-core-utils.mjs +3 -3
  47. package/fesm2022/cute-widgets-base-core-utils.mjs.map +1 -1
  48. package/fesm2022/cute-widgets-base-core.mjs +50 -38
  49. package/fesm2022/cute-widgets-base-core.mjs.map +1 -1
  50. package/fesm2022/cute-widgets-base-datepicker.mjs +100 -99
  51. package/fesm2022/cute-widgets-base-datepicker.mjs.map +1 -1
  52. package/fesm2022/cute-widgets-base-dialog.mjs +170 -135
  53. package/fesm2022/cute-widgets-base-dialog.mjs.map +1 -1
  54. package/fesm2022/cute-widgets-base-divider.mjs +7 -7
  55. package/fesm2022/cute-widgets-base-divider.mjs.map +1 -1
  56. package/fesm2022/cute-widgets-base-expansion.mjs +27 -27
  57. package/fesm2022/cute-widgets-base-expansion.mjs.map +1 -1
  58. package/fesm2022/cute-widgets-base-form-field.mjs +28 -28
  59. package/fesm2022/cute-widgets-base-form-field.mjs.map +1 -1
  60. package/fesm2022/cute-widgets-base-grid-list.mjs +22 -22
  61. package/fesm2022/cute-widgets-base-grid-list.mjs.map +1 -1
  62. package/fesm2022/cute-widgets-base-icon.mjs +10 -10
  63. package/fesm2022/cute-widgets-base-icon.mjs.map +1 -1
  64. package/fesm2022/cute-widgets-base-input.mjs +7 -7
  65. package/fesm2022/cute-widgets-base-input.mjs.map +1 -1
  66. package/fesm2022/cute-widgets-base-layout-container.mjs +10 -10
  67. package/fesm2022/cute-widgets-base-layout-container.mjs.map +1 -1
  68. package/fesm2022/cute-widgets-base-layout-stack.mjs +13 -13
  69. package/fesm2022/cute-widgets-base-layout-stack.mjs.map +1 -1
  70. package/fesm2022/cute-widgets-base-layout.mjs +23 -23
  71. package/fesm2022/cute-widgets-base-layout.mjs.map +1 -1
  72. package/fesm2022/cute-widgets-base-list.mjs +56 -56
  73. package/fesm2022/cute-widgets-base-list.mjs.map +1 -1
  74. package/fesm2022/cute-widgets-base-menu.mjs +581 -388
  75. package/fesm2022/cute-widgets-base-menu.mjs.map +1 -1
  76. package/fesm2022/cute-widgets-base-navbar.mjs +101 -61
  77. package/fesm2022/cute-widgets-base-navbar.mjs.map +1 -1
  78. package/fesm2022/cute-widgets-base-paginator.mjs +13 -13
  79. package/fesm2022/cute-widgets-base-paginator.mjs.map +1 -1
  80. package/fesm2022/cute-widgets-base-progress.mjs +10 -10
  81. package/fesm2022/cute-widgets-base-progress.mjs.map +1 -1
  82. package/fesm2022/cute-widgets-base-radio.mjs +11 -11
  83. package/fesm2022/cute-widgets-base-radio.mjs.map +1 -1
  84. package/fesm2022/cute-widgets-base-select.mjs +11 -11
  85. package/fesm2022/cute-widgets-base-select.mjs.map +1 -1
  86. package/fesm2022/cute-widgets-base-sidenav.mjs +26 -26
  87. package/fesm2022/cute-widgets-base-sidenav.mjs.map +1 -1
  88. package/fesm2022/cute-widgets-base-slider.mjs +10 -10
  89. package/fesm2022/cute-widgets-base-slider.mjs.map +1 -1
  90. package/fesm2022/cute-widgets-base-snack-bar.mjs +28 -28
  91. package/fesm2022/cute-widgets-base-snack-bar.mjs.map +1 -1
  92. package/fesm2022/cute-widgets-base-sort.mjs +13 -13
  93. package/fesm2022/cute-widgets-base-sort.mjs.map +1 -1
  94. package/fesm2022/cute-widgets-base-spinner.mjs +8 -8
  95. package/fesm2022/cute-widgets-base-spinner.mjs.map +1 -1
  96. package/fesm2022/cute-widgets-base-stepper.mjs +40 -40
  97. package/fesm2022/cute-widgets-base-stepper.mjs.map +1 -1
  98. package/fesm2022/cute-widgets-base-table.mjs +58 -66
  99. package/fesm2022/cute-widgets-base-table.mjs.map +1 -1
  100. package/fesm2022/cute-widgets-base-tabs.mjs +100 -75
  101. package/fesm2022/cute-widgets-base-tabs.mjs.map +1 -1
  102. package/fesm2022/cute-widgets-base-timepicker.mjs +34 -63
  103. package/fesm2022/cute-widgets-base-timepicker.mjs.map +1 -1
  104. package/fesm2022/cute-widgets-base-toolbar.mjs +13 -13
  105. package/fesm2022/cute-widgets-base-toolbar.mjs.map +1 -1
  106. package/fesm2022/cute-widgets-base-tooltip.mjs +10 -10
  107. package/fesm2022/cute-widgets-base-tooltip.mjs.map +1 -1
  108. package/fesm2022/cute-widgets-base-tree.mjs +25 -25
  109. package/fesm2022/cute-widgets-base-tree.mjs.map +1 -1
  110. package/fesm2022/cute-widgets-base.mjs +4 -4
  111. package/package.json +121 -121
  112. package/{abstract/index.d.ts → types/cute-widgets-base-abstract.d.ts} +9 -3
  113. package/{autocomplete/index.d.ts → types/cute-widgets-base-autocomplete.d.ts} +2 -2
  114. package/{badge/index.d.ts → types/cute-widgets-base-badge.d.ts} +6 -5
  115. package/{bottom-sheet/index.d.ts → types/cute-widgets-base-bottom-sheet.d.ts} +1 -1
  116. package/{button-toggle/index.d.ts → types/cute-widgets-base-button-toggle.d.ts} +15 -5
  117. package/{button/index.d.ts → types/cute-widgets-base-button.d.ts} +44 -22
  118. package/{checkbox/index.d.ts → types/cute-widgets-base-checkbox.d.ts} +1 -1
  119. package/{chips/index.d.ts → types/cute-widgets-base-chips.d.ts} +1 -1
  120. package/types/cute-widgets-base-collapse.d.ts +98 -0
  121. package/{core/layout/index.d.ts → types/cute-widgets-base-core-layout.d.ts} +7 -1
  122. package/{core/nav/index.d.ts → types/cute-widgets-base-core-nav.d.ts} +2 -1
  123. package/{core/observers/index.d.ts → types/cute-widgets-base-core-observers.d.ts} +1 -1
  124. package/{core/option/index.d.ts → types/cute-widgets-base-core-option.d.ts} +1 -1
  125. package/{core/index.d.ts → types/cute-widgets-base-core.d.ts} +7 -1
  126. package/{datepicker/index.d.ts → types/cute-widgets-base-datepicker.d.ts} +2 -2
  127. package/{dialog/index.d.ts → types/cute-widgets-base-dialog.d.ts} +81 -57
  128. package/{expansion/index.d.ts → types/cute-widgets-base-expansion.d.ts} +4 -14
  129. package/{form-field/index.d.ts → types/cute-widgets-base-form-field.d.ts} +1 -1
  130. package/{icon/index.d.ts → types/cute-widgets-base-icon.d.ts} +1 -1
  131. package/{input/index.d.ts → types/cute-widgets-base-input.d.ts} +1 -1
  132. package/{menu/index.d.ts → types/cute-widgets-base-menu.d.ts} +202 -121
  133. package/{navbar/index.d.ts → types/cute-widgets-base-navbar.d.ts} +24 -9
  134. package/{paginator/index.d.ts → types/cute-widgets-base-paginator.d.ts} +2 -2
  135. package/{progress/index.d.ts → types/cute-widgets-base-progress.d.ts} +1 -1
  136. package/{radio/index.d.ts → types/cute-widgets-base-radio.d.ts} +2 -2
  137. package/{sidenav/index.d.ts → types/cute-widgets-base-sidenav.d.ts} +1 -1
  138. package/{snack-bar/index.d.ts → types/cute-widgets-base-snack-bar.d.ts} +1 -1
  139. package/{sort/index.d.ts → types/cute-widgets-base-sort.d.ts} +1 -1
  140. package/{table/index.d.ts → types/cute-widgets-base-table.d.ts} +1 -1
  141. package/{tabs/index.d.ts → types/cute-widgets-base-tabs.d.ts} +35 -14
  142. package/{tree/index.d.ts → types/cute-widgets-base-tree.d.ts} +2 -2
  143. package/collapse/index.d.ts +0 -97
  144. /package/{alert/index.d.ts → types/cute-widgets-base-alert.d.ts} +0 -0
  145. /package/{card/index.d.ts → types/cute-widgets-base-card.d.ts} +0 -0
  146. /package/{core/animation/index.d.ts → types/cute-widgets-base-core-animation.d.ts} +0 -0
  147. /package/{core/datetime/index.d.ts → types/cute-widgets-base-core-datetime.d.ts} +0 -0
  148. /package/{core/directives/index.d.ts → types/cute-widgets-base-core-directives.d.ts} +0 -0
  149. /package/{core/error/index.d.ts → types/cute-widgets-base-core-error.d.ts} +0 -0
  150. /package/{core/interfaces/index.d.ts → types/cute-widgets-base-core-interfaces.d.ts} +0 -0
  151. /package/{core/line/index.d.ts → types/cute-widgets-base-core-line.d.ts} +0 -0
  152. /package/{core/pipes/index.d.ts → types/cute-widgets-base-core-pipes.d.ts} +0 -0
  153. /package/{core/ripple/index.d.ts → types/cute-widgets-base-core-ripple.d.ts} +0 -0
  154. /package/{core/testing/index.d.ts → types/cute-widgets-base-core-testing.d.ts} +0 -0
  155. /package/{core/theming/index.d.ts → types/cute-widgets-base-core-theming.d.ts} +0 -0
  156. /package/{core/types/index.d.ts → types/cute-widgets-base-core-types.d.ts} +0 -0
  157. /package/{core/utils/index.d.ts → types/cute-widgets-base-core-utils.d.ts} +0 -0
  158. /package/{divider/index.d.ts → types/cute-widgets-base-divider.d.ts} +0 -0
  159. /package/{grid-list/index.d.ts → types/cute-widgets-base-grid-list.d.ts} +0 -0
  160. /package/{layout/container/index.d.ts → types/cute-widgets-base-layout-container.d.ts} +0 -0
  161. /package/{layout/stack/index.d.ts → types/cute-widgets-base-layout-stack.d.ts} +0 -0
  162. /package/{layout/index.d.ts → types/cute-widgets-base-layout.d.ts} +0 -0
  163. /package/{list/index.d.ts → types/cute-widgets-base-list.d.ts} +0 -0
  164. /package/{select/index.d.ts → types/cute-widgets-base-select.d.ts} +0 -0
  165. /package/{slider/index.d.ts → types/cute-widgets-base-slider.d.ts} +0 -0
  166. /package/{spinner/index.d.ts → types/cute-widgets-base-spinner.d.ts} +0 -0
  167. /package/{stepper/index.d.ts → types/cute-widgets-base-stepper.d.ts} +0 -0
  168. /package/{timepicker/index.d.ts → types/cute-widgets-base-timepicker.d.ts} +0 -0
  169. /package/{toolbar/index.d.ts → types/cute-widgets-base-toolbar.d.ts} +0 -0
  170. /package/{tooltip/index.d.ts → types/cute-widgets-base-tooltip.d.ts} +0 -0
  171. /package/{index.d.ts → types/cute-widgets-base.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"cute-widgets-base-core-theming.mjs","sources":["../../../../projects/cute-widgets/base/core/theming/src/ThemeColor.ts","../../../../projects/cute-widgets/base/core/theming/src/theme.service.ts","../../../../projects/cute-widgets/base/core/theming/cute-widgets-base-core-theming.ts"],"sourcesContent":["/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\n/**\r\n * `CuteWidgets` supports standard Bootstrap 5 theme colors - `ThemeColor` type. But to account\r\n * miscellaneous use cases of usage this colors in components CuteWidgets add extended definition of\r\n * latter - `RichThemeColor`. Rich color is the standard color name plus \"-emphasis\" or \"-contrast\" suffix at the end.\r\n * Depending on the context of applying color, the result CSS-class can be `.text-*`, `.text-bg-*` or ended with\r\n * `-emphasis` or `-subtle` suffixes.\r\n */\r\nimport {Directive, InjectionToken, Input, input} from \"@angular/core\";\r\n\r\n/** Bootstrap theme colors */\r\nconst Palette = [\"primary\",\"secondary\",\"success\",\"danger\",\"warning\",\"info\",\"light\",\"dark\",\"link\",\"tertiary\"] as const;\r\n\r\n/** Bootstrap’s base color palette. */\r\nexport type ThemeColor = typeof Palette[number];\r\n/** Rich color palette is based on the standard Bootstrap palette but has additional shades. */\r\nexport type RichThemeColor = ThemeColor | `${ThemeColor}-emphasis` | `${ThemeColor}-contrast`;\r\n\r\n/** Alias for `ThemeColor` type. */\r\nexport type ThemePalette = ThemeColor;\r\n/** Alias for `ThemeColor` type. */\r\nexport type RichThemePalette = RichThemeColor;\r\n\r\n/**\r\n * Whether a string is a valid theme color name\r\n * @param str Text case-sensitive value\r\n * @returns _true_ if `str` is a valid color name, otherwise _false_\r\n */\r\nexport function isThemeColor(str: string|undefined|null): str is ThemeColor {\r\n if (str) {\r\n return Palette.indexOf(str as any) !== -1;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Whether a string is a valid rich or base theme color name.\r\n * @param str Case-sensitive text value of the color name.\r\n * @returns _true_ if `str` is a valid rich color name, otherwise _false_.\r\n */\r\nexport function isRichThemeColor(str: string|undefined|null): str is RichThemeColor {\r\n if (str) {\r\n if (isExtendedColor(str)) {\r\n str = getBaseColor(str as RichThemeColor);\r\n }\r\n return isThemeColor(str);\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Transforms a string to `ThemeColor` type.\r\n * @param color Color value to transform\r\n * @returns _ThemeColor_'s value or _undefined_, if the `color` has an invalid value.\r\n */\r\nexport function toThemeColor(color: string|undefined|null): ThemeColor|undefined {\r\n if (typeof color===\"string\") {\r\n color = color.trim().toLowerCase();\r\n if (isExtendedColor(color)) {\r\n color = getBaseColor(color as RichThemeColor);\r\n }\r\n if (isThemeColor(color)) {\r\n return color;\r\n }\r\n }\r\n return undefined;\r\n}\r\n\r\n/**\r\n * To `_RichThemeColor_` transformer function.\r\n * @param color Color value to transform into rich color type.\r\n * @returns _RichThemeColor_ value or _undefined_ if `color` is invalid.\r\n */\r\nexport function toRichThemeColor(color: string|undefined|null): RichThemeColor|undefined {\r\n if (typeof color===\"string\") {\r\n color = color.trim().toLowerCase();\r\n if (isRichThemeColor(color)) {\r\n return color;\r\n }\r\n }\r\n return undefined;\r\n}\r\n\r\n/**\r\n * Returns a valid Bootstrap's `.text-*` CSS class.\r\n * @param color Color palette to transform into CSS-class.\r\n */\r\nexport function toTextCssClass(color: string|undefined|null): string {\r\n const richThemeColor: RichThemeColor|undefined = toRichThemeColor(color);\r\n if (richThemeColor) {\r\n if (richThemeColor.startsWith(\"tertiary\")) {\r\n // Bootstrap 5 has no \".text-tertiary-*\" classes, so we return following\r\n return \"text-body-tertiary\";\r\n }\r\n\r\n let themeColor: ThemeColor;\r\n if (isExtendedColor(richThemeColor)) {\r\n themeColor = getBaseColor(richThemeColor);\r\n if (richThemeColor.endsWith(\"-emphasis\")) {\r\n return `text-${themeColor}-emphasis`;\r\n }\r\n // contrast\r\n return `text-bg-${themeColor}`;\r\n }\r\n themeColor = richThemeColor as ThemeColor;\r\n return `text-${themeColor}`;\r\n }\r\n return \"\";\r\n}\r\n\r\n/**\r\n * Returns a valid Bootstrap's `.bg-*` or `.text-bg-*` CSS class name.\r\n * @param color Value to transform into CSS-class.\r\n */\r\nexport function toBgCssClass(color: string|undefined|null): string {\r\n const richThemeColor: RichThemeColor|undefined = toRichThemeColor(color);\r\n if (richThemeColor) {\r\n if (richThemeColor.startsWith(\"tertiary\")) {\r\n // Bootstrap 5 has no 'tertiary-subtle'/'bg-tertiary' classes, so we return following\r\n return \"bg-body-tertiary\";\r\n }\r\n\r\n let themeColor: ThemeColor;\r\n if (isExtendedColor(richThemeColor)) {\r\n themeColor = getBaseColor(richThemeColor);\r\n if (richThemeColor.endsWith(\"-emphasis\")) {\r\n return `bg-${themeColor}-subtle`;\r\n }\r\n // contrast\r\n return `text-bg-${themeColor}`;\r\n }\r\n\r\n themeColor = richThemeColor as ThemeColor;\r\n // Simple background\r\n return `bg-${themeColor}`;\r\n }\r\n return \"\";\r\n}\r\n\r\n/**\r\n * Set a background color with contrasting foreground color.\r\n * @param color Color palette to transform into CSS-class.\r\n * @returns A valid Bootstrap's `.text-bg-*` CSS-class\r\n */\r\nexport function toTextBgCssClass(color: string|undefined|null): string {\r\n const richThemeColor: RichThemeColor|undefined = toRichThemeColor(color);\r\n if (richThemeColor) {\r\n if (richThemeColor.startsWith(\"tertiary\")) {\r\n return \"text-body-tertiary\";\r\n }\r\n let themeColor: ThemeColor;\r\n if (isExtendedColor(richThemeColor)) {\r\n themeColor = getBaseColor(richThemeColor);\r\n } else {\r\n themeColor = richThemeColor as ThemeColor;\r\n }\r\n return \"text-bg-\"+themeColor;\r\n }\r\n return \"\";\r\n}\r\n\r\n/**\r\n * Returns a valid Bootstrap's `.text-*` or `.text-bg-*` CSS class.\r\n * @param color Color value to transform into CSS-class.\r\n */\r\nexport function toColorCssClass(color: string|undefined|null): string {\r\n if (color) {\r\n if (color.endsWith(\"-contrast\")) {\r\n return toTextBgCssClass(color);\r\n }\r\n return toTextCssClass(color);\r\n }\r\n return \"\";\r\n}\r\n\r\n/**\r\n * Extracts `ThemeColor` from the `RichThemeColor`.\r\n * @param color Rich color\r\n * @returns Base theme color.\r\n * @internal\r\n */\r\nfunction getBaseColor(color: RichThemeColor): ThemeColor {\r\n let dashPos = color.indexOf(\"-\");\r\n if (dashPos >= 0) {\r\n return color.slice(0, dashPos) as ThemeColor;\r\n }\r\n return color as ThemeColor;\r\n}\r\n\r\n/** Whether the specified color is extended counterpart of the standard palette color. */\r\nfunction isExtendedColor(color: string): boolean {\r\n return color.endsWith(\"-emphasis\") || color.endsWith(\"-contrast\");\r\n}\r\n\r\n\r\nexport const CUTE_THEME_COLOR = new InjectionToken<CuteThemeColor>(\"CUTE_THEME_COLOR\");\r\n\r\n@Directive({\r\n selector: '[cuteThemeColor]',\r\n exportAs: 'cuteThemeColor',\r\n host: {},\r\n providers: [{provide: CUTE_THEME_COLOR, useExisting: CuteThemeColor}],\r\n})\r\nexport class CuteThemeColor /* extends ... */ {\r\n\r\n @Input(\"cuteThemeColor\")\r\n color: RichThemeColor | undefined;\r\n\r\n colorClass(): string {\r\n return toColorCssClass(this.color);\r\n }\r\n\r\n bgClass(): string {\r\n return toBgCssClass(this.color);\r\n }\r\n\r\n textBgClass(): string {\r\n return toTextBgCssClass(this.color);\r\n }\r\n\r\n}\r\n","import {DOCUMENT, inject, Injectable, OnDestroy} from '@angular/core';\r\nimport {fromEvent, Subject} from 'rxjs';\r\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\r\nimport {MediaMatcher} from '@angular/cdk/layout';\r\n\r\nconst PREFERS_COLOR_SCHEME = '(prefers-color-scheme: dark)';\r\nconst THEME_ATTR_NAME = \"data-bs-theme\";\r\n\r\nexport type CuteTheme = \"light\" | \"dark\" | \"auto\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class CuteThemeService implements OnDestroy {\r\n private _document = inject(DOCUMENT);\r\n private _mediaQueryList: MediaQueryList;\r\n private _mediaChange = new Subject<MediaQueryListEvent>();\r\n\r\n /** Observable that can be used to receive `MediaMatcher`'s _change_ event. */\r\n readonly change = this._mediaChange.asObservable();\r\n\r\n constructor() {\r\n const mediaMatcher = inject(MediaMatcher);\r\n this._mediaQueryList = mediaMatcher.matchMedia(PREFERS_COLOR_SCHEME);\r\n\r\n fromEvent<MediaQueryListEvent>(this._mediaQueryList, \"change\")\r\n .pipe(takeUntilDestroyed())\r\n .subscribe(event => {\r\n const storedTheme = this.getStoredTheme();\r\n if (storedTheme !== 'light' && storedTheme !== 'dark') {\r\n this.setTheme( this.getPreferredTheme(), false );\r\n }\r\n this._mediaChange.next(event);\r\n });\r\n\r\n fromEvent(window, \"DOMContentLoaded\")\r\n .pipe(takeUntilDestroyed())\r\n .subscribe(() => {\r\n this.setTheme( this.getPreferredTheme() );\r\n });\r\n }\r\n\r\n private getStoredTheme(): CuteTheme|null {\r\n const theme = localStorage.getItem('theme');\r\n if (theme && [\"light\",\"dark\",\"auto\"].includes(theme)) {\r\n return theme as CuteTheme;\r\n }\r\n return null;\r\n }\r\n\r\n private setStoredTheme(theme: CuteTheme): void{\r\n return localStorage.setItem('theme', theme);\r\n }\r\n\r\n /** Returns the user's preferred color mode. */\r\n getPreferredTheme(): CuteTheme {\r\n const storedTheme = this.getStoredTheme();\r\n if (storedTheme) {\r\n return storedTheme;\r\n }\r\n\r\n return this.getCurrentTheme();\r\n }\r\n\r\n /** Returns the browser's color theme. */\r\n getCurrentTheme(): CuteTheme {\r\n return this._mediaQueryList.matches ? 'dark' : 'light';\r\n }\r\n\r\n /** Whether is the dark theme currently selected. */\r\n isDarkTheme(): boolean {\r\n return this.getTheme() == \"dark\";\r\n }\r\n\r\n /** Whether is the light theme currently selected. */\r\n isLightTheme(): boolean {\r\n return !this.isDarkTheme();\r\n }\r\n\r\n /** Returns the Bootstrap's color theme. */\r\n getTheme(): Omit<CuteTheme, \"auto\"> {\r\n const docElem = this._document.documentElement;\r\n let attrValue = docElem.getAttribute(THEME_ATTR_NAME);\r\n if (attrValue == null) {\r\n attrValue = this.getCurrentTheme();\r\n }\r\n return attrValue;\r\n }\r\n\r\n /**\r\n * Changes the default color mode (theme) of all pages in the website with the opportunity of auto-detection.\r\n * @param theme Desired color theme.\r\n * @param emitEvent Emulate event emitting. Default is _true_.\r\n */\r\n setTheme(theme: CuteTheme, emitEvent: boolean = true): void {\r\n const docElem = this._document.documentElement;\r\n let matches: boolean;\r\n if (theme === 'auto') {\r\n matches = this._mediaQueryList.matches;\r\n docElem.setAttribute(THEME_ATTR_NAME, (matches ? 'dark' : 'light'));\r\n } else {\r\n matches = (theme === \"dark\");\r\n docElem.setAttribute(THEME_ATTR_NAME, theme);\r\n }\r\n this.setStoredTheme(theme);\r\n if (emitEvent) {\r\n // dispatch artificial (not trusted) change event\r\n this._mediaQueryList.dispatchEvent( new MediaQueryListEvent(\"change\", {matches, media: this._mediaQueryList.media}) );\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this._mediaChange.complete();\r\n }\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cute-widgets-base-core-theming.mjs","sources":["../../../../projects/cute-widgets/base/core/theming/src/ThemeColor.ts","../../../../projects/cute-widgets/base/core/theming/src/theme.service.ts","../../../../projects/cute-widgets/base/core/theming/cute-widgets-base-core-theming.ts"],"sourcesContent":["/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\n/**\r\n * `CuteWidgets` supports standard Bootstrap 5 theme colors - `ThemeColor` type. But to account\r\n * miscellaneous use cases of usage this colors in components CuteWidgets add extended definition of\r\n * latter - `RichThemeColor`. Rich color is the standard color name plus \"-emphasis\" or \"-contrast\" suffix at the end.\r\n * Depending on the context of applying color, the result CSS-class can be `.text-*`, `.text-bg-*` or ended with\r\n * `-emphasis` or `-subtle` suffixes.\r\n */\r\nimport {Directive, InjectionToken, Input, input} from \"@angular/core\";\r\n\r\n/** Bootstrap theme colors */\r\nconst Palette = [\"primary\",\"secondary\",\"success\",\"danger\",\"warning\",\"info\",\"light\",\"dark\",\"link\",\"tertiary\"] as const;\r\n\r\n/** Bootstrap’s base color palette. */\r\nexport type ThemeColor = typeof Palette[number];\r\n/** Rich color palette is based on the standard Bootstrap palette but has additional shades. */\r\nexport type RichThemeColor = ThemeColor | `${ThemeColor}-emphasis` | `${ThemeColor}-contrast`;\r\n\r\n/** Alias for `ThemeColor` type. */\r\nexport type ThemePalette = ThemeColor;\r\n/** Alias for `ThemeColor` type. */\r\nexport type RichThemePalette = RichThemeColor;\r\n\r\n/**\r\n * Whether a string is a valid theme color name\r\n * @param str Text case-sensitive value\r\n * @returns _true_ if `str` is a valid color name, otherwise _false_\r\n */\r\nexport function isThemeColor(str: string|undefined|null): str is ThemeColor {\r\n if (str) {\r\n return Palette.indexOf(str as any) !== -1;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Whether a string is a valid rich or base theme color name.\r\n * @param str Case-sensitive text value of the color name.\r\n * @returns _true_ if `str` is a valid rich color name, otherwise _false_.\r\n */\r\nexport function isRichThemeColor(str: string|undefined|null): str is RichThemeColor {\r\n if (str) {\r\n if (isExtendedColor(str)) {\r\n str = getBaseColor(str as RichThemeColor);\r\n }\r\n return isThemeColor(str);\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Transforms a string to `ThemeColor` type.\r\n * @param color Color value to transform\r\n * @returns _ThemeColor_'s value or _undefined_, if the `color` has an invalid value.\r\n */\r\nexport function toThemeColor(color: string|undefined|null): ThemeColor|undefined {\r\n if (typeof color===\"string\") {\r\n color = color.trim().toLowerCase();\r\n if (isExtendedColor(color)) {\r\n color = getBaseColor(color as RichThemeColor);\r\n }\r\n if (isThemeColor(color)) {\r\n return color;\r\n }\r\n }\r\n return undefined;\r\n}\r\n\r\n/**\r\n * To `_RichThemeColor_` transformer function.\r\n * @param color Color value to transform into rich color type.\r\n * @returns _RichThemeColor_ value or _undefined_ if `color` is invalid.\r\n */\r\nexport function toRichThemeColor(color: string|undefined|null): RichThemeColor|undefined {\r\n if (typeof color===\"string\") {\r\n color = color.trim().toLowerCase();\r\n if (isRichThemeColor(color)) {\r\n return color;\r\n }\r\n }\r\n return undefined;\r\n}\r\n\r\n/**\r\n * Returns a valid Bootstrap's `.text-*` CSS class.\r\n * @param color Color palette to transform into CSS-class.\r\n */\r\nexport function toTextCssClass(color: string|undefined|null): string {\r\n const richThemeColor: RichThemeColor|undefined = toRichThemeColor(color);\r\n if (richThemeColor) {\r\n if (richThemeColor.startsWith(\"tertiary\")) {\r\n // Bootstrap 5 has no \".text-tertiary-*\" classes, so we return following\r\n return \"text-body-tertiary\";\r\n }\r\n\r\n let themeColor: ThemeColor;\r\n if (isExtendedColor(richThemeColor)) {\r\n themeColor = getBaseColor(richThemeColor);\r\n if (richThemeColor.endsWith(\"-emphasis\")) {\r\n return `text-${themeColor}-emphasis`;\r\n }\r\n // contrast\r\n return `text-bg-${themeColor}`;\r\n }\r\n themeColor = richThemeColor as ThemeColor;\r\n return `text-${themeColor}`;\r\n }\r\n return \"\";\r\n}\r\n\r\n/**\r\n * Returns a valid Bootstrap's `.bg-*` or `.text-bg-*` CSS class name.\r\n * @param color Value to transform into CSS-class.\r\n */\r\nexport function toBgCssClass(color: string|undefined|null): string {\r\n const richThemeColor: RichThemeColor|undefined = toRichThemeColor(color);\r\n if (richThemeColor) {\r\n if (richThemeColor.startsWith(\"tertiary\")) {\r\n // Bootstrap 5 has no 'tertiary-subtle'/'bg-tertiary' classes, so we return following\r\n return \"bg-body-tertiary\";\r\n }\r\n\r\n let themeColor: ThemeColor;\r\n if (isExtendedColor(richThemeColor)) {\r\n themeColor = getBaseColor(richThemeColor);\r\n if (richThemeColor.endsWith(\"-emphasis\")) {\r\n return `bg-${themeColor}-subtle text-${themeColor}-emphasis`;\r\n }\r\n // contrast\r\n return `text-bg-${themeColor}`;\r\n }\r\n\r\n themeColor = richThemeColor as ThemeColor;\r\n // Simple background\r\n return `bg-${themeColor}`;\r\n }\r\n return \"\";\r\n}\r\n\r\n/**\r\n * Set a background color with contrasting foreground color.\r\n * @param color Color palette to transform into CSS-class.\r\n * @returns A valid Bootstrap's `.text-bg-*` CSS-class\r\n */\r\nexport function toTextBgCssClass(color: string|undefined|null): string {\r\n const richThemeColor: RichThemeColor|undefined = toRichThemeColor(color);\r\n if (richThemeColor) {\r\n if (richThemeColor.startsWith(\"tertiary\")) {\r\n return \"text-body-tertiary\";\r\n }\r\n let themeColor: ThemeColor;\r\n if (isExtendedColor(richThemeColor)) {\r\n themeColor = getBaseColor(richThemeColor);\r\n } else {\r\n themeColor = richThemeColor as ThemeColor;\r\n }\r\n return \"text-bg-\"+themeColor;\r\n }\r\n return \"\";\r\n}\r\n\r\n/**\r\n * Returns a valid Bootstrap's `.text-*` or `.text-bg-*` CSS class.\r\n * @param color Color value to transform into CSS-class.\r\n */\r\nexport function toColorCssClass(color: string|undefined|null): string {\r\n if (color) {\r\n if (color.endsWith(\"-contrast\")) {\r\n return toTextBgCssClass(color);\r\n }\r\n return toTextCssClass(color);\r\n }\r\n return \"\";\r\n}\r\n\r\n/**\r\n * Extracts `ThemeColor` from the `RichThemeColor`.\r\n * @param color Rich color\r\n * @returns Base theme color.\r\n * @internal\r\n */\r\nfunction getBaseColor(color: RichThemeColor): ThemeColor {\r\n let dashPos = color.indexOf(\"-\");\r\n if (dashPos >= 0) {\r\n return color.slice(0, dashPos) as ThemeColor;\r\n }\r\n return color as ThemeColor;\r\n}\r\n\r\n/** Whether the specified color is extended counterpart of the standard palette color. */\r\nfunction isExtendedColor(color: string): boolean {\r\n return color.endsWith(\"-emphasis\") || color.endsWith(\"-contrast\");\r\n}\r\n\r\n\r\nexport const CUTE_THEME_COLOR = new InjectionToken<CuteThemeColor>(\"CUTE_THEME_COLOR\");\r\n\r\n@Directive({\r\n selector: '[cuteThemeColor]',\r\n exportAs: 'cuteThemeColor',\r\n host: {},\r\n providers: [{provide: CUTE_THEME_COLOR, useExisting: CuteThemeColor}],\r\n})\r\nexport class CuteThemeColor /* extends ... */ {\r\n\r\n @Input(\"cuteThemeColor\")\r\n color: RichThemeColor | undefined;\r\n\r\n colorClass(): string {\r\n return toColorCssClass(this.color);\r\n }\r\n\r\n bgClass(): string {\r\n return toBgCssClass(this.color);\r\n }\r\n\r\n textBgClass(): string {\r\n return toTextBgCssClass(this.color);\r\n }\r\n\r\n}\r\n","import {DOCUMENT, inject, Injectable, OnDestroy} from '@angular/core';\r\nimport {fromEvent, Subject} from 'rxjs';\r\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\r\nimport {MediaMatcher} from '@angular/cdk/layout';\r\n\r\nconst PREFERS_COLOR_SCHEME = '(prefers-color-scheme: dark)';\r\nconst THEME_ATTR_NAME = \"data-bs-theme\";\r\n\r\nexport type CuteTheme = \"light\" | \"dark\" | \"auto\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class CuteThemeService implements OnDestroy {\r\n private _document = inject(DOCUMENT);\r\n private _mediaQueryList: MediaQueryList;\r\n private _mediaChange = new Subject<MediaQueryListEvent>();\r\n\r\n /** Observable that can be used to receive `MediaMatcher`'s _change_ event. */\r\n readonly change = this._mediaChange.asObservable();\r\n\r\n constructor() {\r\n const mediaMatcher = inject(MediaMatcher);\r\n this._mediaQueryList = mediaMatcher.matchMedia(PREFERS_COLOR_SCHEME);\r\n\r\n fromEvent<MediaQueryListEvent>(this._mediaQueryList, \"change\")\r\n .pipe(takeUntilDestroyed())\r\n .subscribe(event => {\r\n const storedTheme = this.getStoredTheme();\r\n if (storedTheme !== 'light' && storedTheme !== 'dark') {\r\n this.setTheme( this.getPreferredTheme(), false );\r\n }\r\n this._mediaChange.next(event);\r\n });\r\n\r\n fromEvent(window, \"DOMContentLoaded\")\r\n .pipe(takeUntilDestroyed())\r\n .subscribe(() => {\r\n this.setTheme( this.getPreferredTheme() );\r\n });\r\n }\r\n\r\n private getStoredTheme(): CuteTheme|null {\r\n const theme = localStorage.getItem('theme');\r\n if (theme && [\"light\",\"dark\",\"auto\"].includes(theme)) {\r\n return theme as CuteTheme;\r\n }\r\n return null;\r\n }\r\n\r\n private setStoredTheme(theme: CuteTheme): void{\r\n return localStorage.setItem('theme', theme);\r\n }\r\n\r\n /** Returns the user's preferred color mode. */\r\n getPreferredTheme(): CuteTheme {\r\n const storedTheme = this.getStoredTheme();\r\n if (storedTheme) {\r\n return storedTheme;\r\n }\r\n\r\n return this.getCurrentTheme();\r\n }\r\n\r\n /** Returns the browser's color theme. */\r\n getCurrentTheme(): CuteTheme {\r\n return this._mediaQueryList.matches ? 'dark' : 'light';\r\n }\r\n\r\n /** Whether is the dark theme currently selected. */\r\n isDarkTheme(): boolean {\r\n return this.getTheme() == \"dark\";\r\n }\r\n\r\n /** Whether is the light theme currently selected. */\r\n isLightTheme(): boolean {\r\n return !this.isDarkTheme();\r\n }\r\n\r\n /** Returns the Bootstrap's color theme. */\r\n getTheme(): Omit<CuteTheme, \"auto\"> {\r\n const docElem = this._document.documentElement;\r\n let attrValue = docElem.getAttribute(THEME_ATTR_NAME);\r\n if (attrValue == null) {\r\n attrValue = this.getCurrentTheme();\r\n }\r\n return attrValue;\r\n }\r\n\r\n /**\r\n * Changes the default color mode (theme) of all pages in the website with the opportunity of auto-detection.\r\n * @param theme Desired color theme.\r\n * @param emitEvent Emulate event emitting. Default is _true_.\r\n */\r\n setTheme(theme: CuteTheme, emitEvent: boolean = true): void {\r\n const docElem = this._document.documentElement;\r\n let matches: boolean;\r\n if (theme === 'auto') {\r\n matches = this._mediaQueryList.matches;\r\n docElem.setAttribute(THEME_ATTR_NAME, (matches ? 'dark' : 'light'));\r\n } else {\r\n matches = (theme === \"dark\");\r\n docElem.setAttribute(THEME_ATTR_NAME, theme);\r\n }\r\n this.setStoredTheme(theme);\r\n if (emitEvent) {\r\n // dispatch artificial (not trusted) change event\r\n this._mediaQueryList.dispatchEvent( new MediaQueryListEvent(\"change\", {matches, media: this._mediaQueryList.media}) );\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this._mediaChange.complete();\r\n }\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -188,10 +188,10 @@ class IdGenerator {
188
188
  return v.toString(16);
189
189
  });
190
190
  }
191
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IdGenerator, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
192
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IdGenerator, providedIn: 'root' }); }
191
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: IdGenerator, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
192
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: IdGenerator, providedIn: 'root' }); }
193
193
  }
194
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IdGenerator, decorators: [{
194
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: IdGenerator, decorators: [{
195
195
  type: Injectable,
196
196
  args: [{ providedIn: 'root' }]
197
197
  }] });
@@ -1 +1 @@
1
- {"version":3,"file":"cute-widgets-base-core-utils.mjs","sources":["../../../../projects/cute-widgets/base/core/utils/src/transition.ts","../../../../projects/cute-widgets/base/core/utils/src/token.ts","../../../../projects/cute-widgets/base/core/utils/src/export.ts","../../../../projects/cute-widgets/base/core/utils/src/IdGenerator.ts","../../../../projects/cute-widgets/base/core/utils/src/Scheduler.ts","../../../../projects/cute-widgets/base/core/utils/cute-widgets-base-core-utils.ts"],"sourcesContent":["/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\n/**\r\n * Gets transition duration total value\r\n * @param element Source HTML element\r\n * @returns Duration with delay time in milliseconds\r\n */\r\nexport function getOverallTransitionDuration(element: HTMLElement): number {\r\n return getTransitionDelay(element) + getTransitionDuration(element);\r\n}\r\n\r\n/**\r\n * Gets transition duration value\r\n * @param element Source HTML element\r\n * @returns Duration time in milliseconds\r\n */\r\nexport function getTransitionDuration(element: HTMLElement): number {\r\n const {transitionDuration } = window.getComputedStyle(element);\r\n const durationInMilliseconds = transitionDuration.toLowerCase().endsWith(\"ms\");\r\n const transitionDurationMs = parseFloat(transitionDuration) * (durationInMilliseconds ? 1 : 1000);\r\n\r\n return (transitionDurationMs);\r\n}\r\n\r\n/**\r\n * Gets duration to wait before starting transition\r\n * @param element Source HTML element\r\n * @returns Delay time in milliseconds\r\n */\r\nexport function getTransitionDelay(element: HTMLElement): number {\r\n const { transitionDelay} = window.getComputedStyle(element);\r\n const delayInMilliseconds = transitionDelay.toLowerCase().endsWith(\"ms\");\r\n const transitionDelayMs = parseFloat(transitionDelay) * (delayInMilliseconds ? 1 : 1000);\r\n\r\n return (transitionDelayMs);\r\n}\r\n\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {InjectionToken} from '@angular/core';\r\n\r\nexport function createValueToken<T>(value: T): InjectionToken<T> {\r\n return createFactoryToken(() => value);\r\n}\r\n\r\nexport function createFactoryToken<T>(factory: () => T): InjectionToken<T> {\r\n return new InjectionToken<T>(`createFactoryToken`, {factory});\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {ElementRef} from \"@angular/core\";\r\n\r\nexport type ExportOptions = {\r\n filename?: string;\r\n delimiter?: string;\r\n columns?: string[];\r\n}\r\n\r\n/**\r\n * Forcibly starts the process of downloading and saving the file.\r\n * @param blobData Data to save\r\n * @param filename File name to save. Default is `download`.\r\n */\r\nexport function saveAs(blobData: Blob, filename?: string) {\r\n const link = document.createElement(\"a\");\r\n link.href = URL.createObjectURL(blobData);\r\n link.download = filename || \"download\";\r\n link.click();\r\n URL.revokeObjectURL(link.href);\r\n}\r\n\r\n/**\r\n * Exports data from HTML table to MS Excel format text\r\n * @param tableIdOrElem HTML table's `id` value or `ElementRef` object\r\n * @param options Export options\r\n */\r\nexport function exportToExcel(tableIdOrElem: string|ElementRef, options: ExportOptions = {filename: 'records.xls'}) {\r\n let tableElem: HTMLElement|null;\r\n if (typeof tableIdOrElem===\"string\") {\r\n tableElem = document.getElementById(tableIdOrElem);\r\n } else {\r\n tableElem = tableIdOrElem.nativeElement;\r\n }\r\n if (tableElem && tableElem instanceof HTMLTableElement) {\r\n //const tableHTML = encodeURIComponent(tableElem.outerHTML.replace(/ or .*?>/g, '>'));\r\n const tableHTML = tableElem.outerHTML.replace(/ or .*?>/g, '>');\r\n const blobData = new Blob([tableHTML], {type: '{type: application/vnd.ms-excel'});\r\n saveAs(blobData, options?.filename);\r\n }\r\n}\r\n\r\n/**\r\n * Exports data from HTML table to CSV format text\r\n * @param tableIdOrElem HTML table's `id` value or `ElementRef` object\r\n * @param options Export options\r\n */\r\nexport function exportToCSV(tableIdOrElem: string|ElementRef, options: ExportOptions = {filename: 'records.csv'}) {\r\n let tableElem: HTMLElement|null;\r\n if (typeof tableIdOrElem===\"string\") {\r\n tableElem = document.getElementById(tableIdOrElem);\r\n } else {\r\n tableElem = tableIdOrElem.nativeElement;\r\n }\r\n if (tableElem && tableElem instanceof HTMLTableElement) {\r\n const rows = tableElem.querySelectorAll(\"tr\");\r\n let csv: string[] = [];\r\n let keys: number[] = [];\r\n\r\n if (rows.length > 0 && options && options.columns?.length) {\r\n const headers = rows[0].querySelectorAll<HTMLTableColElement>(\"th\");\r\n headers.forEach((header, key) => {\r\n if (options.columns!.findIndex((name) => {\r\n const loweredName = name.toLowerCase();\r\n return header.innerText.toLowerCase() == loweredName || header.classList.contains(\"cdk-column-\"+loweredName);\r\n }) >= 0) {\r\n keys.push(key);\r\n }\r\n });\r\n }\r\n\r\n const appendCells = (cells: HTMLTableColElement[] | NodeListOf<HTMLTableColElement>) => {\r\n const rowText = Array.from(cells).map(cell => cell.innerText);\r\n csv.push(rowText.join(options?.delimiter ?? \",\"));\r\n };\r\n\r\n if (keys.length > 0) {\r\n rows.forEach((row)=>{\r\n const allCells = row.querySelectorAll<HTMLTableColElement>(\"th,td\");\r\n let cells: HTMLTableColElement[] = [];\r\n allCells.forEach((cell, key)=>{\r\n if (keys.indexOf(key) >= 0) {cells.push(cell)}\r\n });\r\n appendCells(cells);\r\n });\r\n } else {\r\n rows.forEach((row)=> {\r\n appendCells( row.querySelectorAll<HTMLTableColElement>(\"th,td\") );\r\n });\r\n }\r\n const blobData = new Blob([csv.join(\"\\n\")], {type: \"text/csv;charset=utf-8;\"});\r\n saveAs(blobData, options?.filename);\r\n }\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {APP_ID, inject, Injectable} from '@angular/core';\r\n\r\n/**\r\n * Keeps track of the ID count per prefix. This helps us make the IDs a bit more deterministic\r\n * like they were before the service was introduced. Note that ideally we wouldn't have to do\r\n * this, but there are some internal tests that rely on the IDs.\r\n */\r\nconst counters: Record<string, number> = {};\r\n\r\n/** Service that generates unique IDs for DOM nodes. */\r\n@Injectable({providedIn: 'root'})\r\nexport class IdGenerator {\r\n private _appId = inject(APP_ID);\r\n\r\n /**\r\n * Generates a unique ID with a specific prefix.\r\n * @param prefix Prefix to add to the ID.\r\n */\r\n getId(prefix: string): string {\r\n // Omit the app ID if it's the default `ng`. Since the vast majority of pages have one\r\n // Angular app on them, we can reduce the number of breakages by not adding it.\r\n if (this._appId !== 'ng') {\r\n prefix += this._appId;\r\n }\r\n\r\n if (!counters.hasOwnProperty(prefix)) {\r\n counters[prefix] = 0;\r\n }\r\n\r\n return `${prefix}${counters[prefix]++}`;\r\n }\r\n\r\n /**\r\n * Generates UUID (ver.4) string using simple algorithm based on random value only\r\n */\r\n getUUID(): string {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'\r\n .replace(/[xy]/g, (c) => {\r\n const r: number = (Math.random() * 16) | 0,\r\n v: number = c == 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n }\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nexport type TaskPriority = \"user-blocking\"|\"user-visible\"|\"background\";\r\n\r\n/**\r\n * A class with static methods specifically designed for scheduling tasks in the browser.\r\n */\r\nexport class Scheduler {\r\n\r\n /** Yielding to the main thread in the browser. */\r\n static async yield(): Promise<void> {\r\n const globalScheduler = (globalThis as any).scheduler;\r\n if (globalScheduler?.yield) {\r\n return globalScheduler.yield();\r\n }\r\n\r\n // Fall back to yielding with setTimeout.\r\n return new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n }\r\n\r\n /**\r\n * Resolves a promise after the delay time in milliseconds\r\n * @param ms Number of milliseconds to wait\r\n *\r\n * @see {@link delay}\r\n */\r\n static async wait(ms: number): Promise<void> {\r\n const startNow = performance.now();\r\n while ((performance.now() - startNow) < ms) {\r\n await Scheduler.yield();\r\n }\r\n }\r\n\r\n /**\r\n * Adding a task to be scheduled according to their priority.\r\n * @param callback Function to run\r\n * @param options Scheduler options\r\n *\r\n * @see {@link async.post}\r\n */\r\n static async postTask(callback: Function, options?: {priority?: TaskPriority, signal?: any, delay?: number}): Promise<void> {\r\n const globalScheduler = (globalThis as any).scheduler;\r\n if (globalScheduler?.postTask) {\r\n return globalScheduler.postTask(callback, options);\r\n }\r\n return new Promise((resolve)=> {\r\n setTimeout(() => resolve(callback()), options?.delay ?? 0);\r\n });\r\n }\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cute-widgets-base-core-utils.mjs","sources":["../../../../projects/cute-widgets/base/core/utils/src/transition.ts","../../../../projects/cute-widgets/base/core/utils/src/token.ts","../../../../projects/cute-widgets/base/core/utils/src/export.ts","../../../../projects/cute-widgets/base/core/utils/src/IdGenerator.ts","../../../../projects/cute-widgets/base/core/utils/src/Scheduler.ts","../../../../projects/cute-widgets/base/core/utils/cute-widgets-base-core-utils.ts"],"sourcesContent":["/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\n/**\r\n * Gets transition duration total value\r\n * @param element Source HTML element\r\n * @returns Duration with delay time in milliseconds\r\n */\r\nexport function getOverallTransitionDuration(element: HTMLElement): number {\r\n return getTransitionDelay(element) + getTransitionDuration(element);\r\n}\r\n\r\n/**\r\n * Gets transition duration value\r\n * @param element Source HTML element\r\n * @returns Duration time in milliseconds\r\n */\r\nexport function getTransitionDuration(element: HTMLElement): number {\r\n const {transitionDuration } = window.getComputedStyle(element);\r\n const durationInMilliseconds = transitionDuration.toLowerCase().endsWith(\"ms\");\r\n const transitionDurationMs = parseFloat(transitionDuration) * (durationInMilliseconds ? 1 : 1000);\r\n\r\n return (transitionDurationMs);\r\n}\r\n\r\n/**\r\n * Gets duration to wait before starting transition\r\n * @param element Source HTML element\r\n * @returns Delay time in milliseconds\r\n */\r\nexport function getTransitionDelay(element: HTMLElement): number {\r\n const { transitionDelay} = window.getComputedStyle(element);\r\n const delayInMilliseconds = transitionDelay.toLowerCase().endsWith(\"ms\");\r\n const transitionDelayMs = parseFloat(transitionDelay) * (delayInMilliseconds ? 1 : 1000);\r\n\r\n return (transitionDelayMs);\r\n}\r\n\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {InjectionToken} from '@angular/core';\r\n\r\nexport function createValueToken<T>(value: T): InjectionToken<T> {\r\n return createFactoryToken(() => value);\r\n}\r\n\r\nexport function createFactoryToken<T>(factory: () => T): InjectionToken<T> {\r\n return new InjectionToken<T>(`createFactoryToken`, {factory});\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {ElementRef} from \"@angular/core\";\r\n\r\nexport type ExportOptions = {\r\n filename?: string;\r\n delimiter?: string;\r\n columns?: string[];\r\n}\r\n\r\n/**\r\n * Forcibly starts the process of downloading and saving the file.\r\n * @param blobData Data to save\r\n * @param filename File name to save. Default is `download`.\r\n */\r\nexport function saveAs(blobData: Blob, filename?: string) {\r\n const link = document.createElement(\"a\");\r\n link.href = URL.createObjectURL(blobData);\r\n link.download = filename || \"download\";\r\n link.click();\r\n URL.revokeObjectURL(link.href);\r\n}\r\n\r\n/**\r\n * Exports data from HTML table to MS Excel format text\r\n * @param tableIdOrElem HTML table's `id` value or `ElementRef` object\r\n * @param options Export options\r\n */\r\nexport function exportToExcel(tableIdOrElem: string|ElementRef, options: ExportOptions = {filename: 'records.xls'}) {\r\n let tableElem: HTMLElement|null;\r\n if (typeof tableIdOrElem===\"string\") {\r\n tableElem = document.getElementById(tableIdOrElem);\r\n } else {\r\n tableElem = tableIdOrElem.nativeElement;\r\n }\r\n if (tableElem && tableElem instanceof HTMLTableElement) {\r\n //const tableHTML = encodeURIComponent(tableElem.outerHTML.replace(/ or .*?>/g, '>'));\r\n const tableHTML = tableElem.outerHTML.replace(/ or .*?>/g, '>');\r\n const blobData = new Blob([tableHTML], {type: '{type: application/vnd.ms-excel'});\r\n saveAs(blobData, options?.filename);\r\n }\r\n}\r\n\r\n/**\r\n * Exports data from HTML table to CSV format text\r\n * @param tableIdOrElem HTML table's `id` value or `ElementRef` object\r\n * @param options Export options\r\n */\r\nexport function exportToCSV(tableIdOrElem: string|ElementRef, options: ExportOptions = {filename: 'records.csv'}) {\r\n let tableElem: HTMLElement|null;\r\n if (typeof tableIdOrElem===\"string\") {\r\n tableElem = document.getElementById(tableIdOrElem);\r\n } else {\r\n tableElem = tableIdOrElem.nativeElement;\r\n }\r\n if (tableElem && tableElem instanceof HTMLTableElement) {\r\n const rows = tableElem.querySelectorAll(\"tr\");\r\n let csv: string[] = [];\r\n let keys: number[] = [];\r\n\r\n if (rows.length > 0 && options && options.columns?.length) {\r\n const headers = rows[0].querySelectorAll<HTMLTableColElement>(\"th\");\r\n headers.forEach((header, key) => {\r\n if (options.columns!.findIndex((name) => {\r\n const loweredName = name.toLowerCase();\r\n return header.innerText.toLowerCase() == loweredName || header.classList.contains(\"cdk-column-\"+loweredName);\r\n }) >= 0) {\r\n keys.push(key);\r\n }\r\n });\r\n }\r\n\r\n const appendCells = (cells: HTMLTableColElement[] | NodeListOf<HTMLTableColElement>) => {\r\n const rowText = Array.from(cells).map(cell => cell.innerText);\r\n csv.push(rowText.join(options?.delimiter ?? \",\"));\r\n };\r\n\r\n if (keys.length > 0) {\r\n rows.forEach((row)=>{\r\n const allCells = row.querySelectorAll<HTMLTableColElement>(\"th,td\");\r\n let cells: HTMLTableColElement[] = [];\r\n allCells.forEach((cell, key)=>{\r\n if (keys.indexOf(key) >= 0) {cells.push(cell)}\r\n });\r\n appendCells(cells);\r\n });\r\n } else {\r\n rows.forEach((row)=> {\r\n appendCells( row.querySelectorAll<HTMLTableColElement>(\"th,td\") );\r\n });\r\n }\r\n const blobData = new Blob([csv.join(\"\\n\")], {type: \"text/csv;charset=utf-8;\"});\r\n saveAs(blobData, options?.filename);\r\n }\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {APP_ID, inject, Injectable} from '@angular/core';\r\n\r\n/**\r\n * Keeps track of the ID count per prefix. This helps us make the IDs a bit more deterministic\r\n * like they were before the service was introduced. Note that ideally we wouldn't have to do\r\n * this, but there are some internal tests that rely on the IDs.\r\n */\r\nconst counters: Record<string, number> = {};\r\n\r\n/** Service that generates unique IDs for DOM nodes. */\r\n@Injectable({providedIn: 'root'})\r\nexport class IdGenerator {\r\n private _appId = inject(APP_ID);\r\n\r\n /**\r\n * Generates a unique ID with a specific prefix.\r\n * @param prefix Prefix to add to the ID.\r\n */\r\n getId(prefix: string): string {\r\n // Omit the app ID if it's the default `ng`. Since the vast majority of pages have one\r\n // Angular app on them, we can reduce the number of breakages by not adding it.\r\n if (this._appId !== 'ng') {\r\n prefix += this._appId;\r\n }\r\n\r\n if (!counters.hasOwnProperty(prefix)) {\r\n counters[prefix] = 0;\r\n }\r\n\r\n return `${prefix}${counters[prefix]++}`;\r\n }\r\n\r\n /**\r\n * Generates UUID (ver.4) string using simple algorithm based on random value only\r\n */\r\n getUUID(): string {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'\r\n .replace(/[xy]/g, (c) => {\r\n const r: number = (Math.random() * 16) | 0,\r\n v: number = c == 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n }\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nexport type TaskPriority = \"user-blocking\"|\"user-visible\"|\"background\";\r\n\r\n/**\r\n * A class with static methods specifically designed for scheduling tasks in the browser.\r\n */\r\nexport class Scheduler {\r\n\r\n /** Yielding to the main thread in the browser. */\r\n static async yield(): Promise<void> {\r\n const globalScheduler = (globalThis as any).scheduler;\r\n if (globalScheduler?.yield) {\r\n return globalScheduler.yield();\r\n }\r\n\r\n // Fall back to yielding with setTimeout.\r\n return new Promise(resolve => {\r\n setTimeout(resolve, 0);\r\n });\r\n }\r\n\r\n /**\r\n * Resolves a promise after the delay time in milliseconds\r\n * @param ms Number of milliseconds to wait\r\n *\r\n * @see {@link delay}\r\n */\r\n static async wait(ms: number): Promise<void> {\r\n const startNow = performance.now();\r\n while ((performance.now() - startNow) < ms) {\r\n await Scheduler.yield();\r\n }\r\n }\r\n\r\n /**\r\n * Adding a task to be scheduled according to their priority.\r\n * @param callback Function to run\r\n * @param options Scheduler options\r\n *\r\n * @see {@link async.post}\r\n */\r\n static async postTask(callback: Function, options?: {priority?: TaskPriority, signal?: any, delay?: number}): Promise<void> {\r\n const globalScheduler = (globalThis as any).scheduler;\r\n if (globalScheduler?.postTask) {\r\n return globalScheduler.postTask(callback, options);\r\n }\r\n return new Promise((resolve)=> {\r\n setTimeout(() => resolve(callback()), options?.delay ?? 0);\r\n });\r\n }\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAAA;;;;;;;AAOG;AAEH;;;;AAIG;AACG,SAAU,4BAA4B,CAAC,OAAoB,EAAA;IAC/D,OAAO,kBAAkB,CAAC,OAAO,CAAC,GAAG,qBAAqB,CAAC,OAAO,CAAC;AACrE;AAEA;;;;AAIG;AACG,SAAU,qBAAqB,CAAC,OAAoB,EAAA;IACxD,MAAM,EAAC,kBAAkB,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;IAC9D,MAAM,sBAAsB,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC9E,IAAA,MAAM,oBAAoB,GAAG,UAAU,CAAC,kBAAkB,CAAC,IAAI,sBAAsB,GAAG,CAAC,GAAG,IAAI,CAAC;IAEjG,QAAQ,oBAAoB;AAC9B;AAEA;;;;AAIG;AACG,SAAU,kBAAkB,CAAC,OAAoB,EAAA;IACrD,MAAM,EAAE,eAAe,EAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;IAC3D,MAAM,mBAAmB,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;AACxE,IAAA,MAAM,iBAAiB,GAAG,UAAU,CAAC,eAAe,CAAC,IAAI,mBAAmB,GAAG,CAAC,GAAG,IAAI,CAAC;IAExF,QAAQ,iBAAiB;AAC3B;;AC1CA;;;;;;;AAOG;AAGG,SAAU,gBAAgB,CAAI,KAAQ,EAAA;AACxC,IAAA,OAAO,kBAAkB,CAAC,MAAM,KAAK,CAAC;AAC1C;AAEM,SAAU,kBAAkB,CAAI,OAAgB,EAAA;IAClD,OAAO,IAAI,cAAc,CAAI,CAAA,kBAAA,CAAoB,EAAE,EAAC,OAAO,EAAC,CAAC;AACjE;;ACAA;;;;AAIG;AACG,SAAU,MAAM,CAAC,QAAc,EAAE,QAAiB,EAAA;IACtD,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;IACxC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC;AACzC,IAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,UAAU;IACtC,IAAI,CAAC,KAAK,EAAE;AACZ,IAAA,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC;AAEA;;;;AAIG;AACG,SAAU,aAAa,CAAC,aAAgC,EAAE,UAAyB,EAAC,QAAQ,EAAE,aAAa,EAAC,EAAA;AAChH,IAAA,IAAI,SAA2B;AAC/B,IAAA,IAAI,OAAO,aAAa,KAAG,QAAQ,EAAE;AACnC,QAAA,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC;IACpD;SAAO;AACL,QAAA,SAAS,GAAG,aAAa,CAAC,aAAa;IACzC;AACA,IAAA,IAAI,SAAS,IAAI,SAAS,YAAY,gBAAgB,EAAE;;AAEtD,QAAA,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC;AAC/D,QAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,EAAC,IAAI,EAAE,iCAAiC,EAAC,CAAC;AACjF,QAAA,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC;IACrC;AACF;AAEA;;;;AAIG;AACG,SAAU,WAAW,CAAC,aAAgC,EAAE,UAAyB,EAAC,QAAQ,EAAE,aAAa,EAAC,EAAA;AAC9G,IAAA,IAAI,SAA2B;AAC/B,IAAA,IAAI,OAAO,aAAa,KAAG,QAAQ,EAAE;AACnC,QAAA,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC;IACpD;SAAO;AACL,QAAA,SAAS,GAAG,aAAa,CAAC,aAAa;IACzC;AACA,IAAA,IAAI,SAAS,IAAI,SAAS,YAAY,gBAAgB,EAAE;QACtD,MAAM,IAAI,GAAG,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAC7C,IAAI,GAAG,GAAa,EAAE;QACtB,IAAI,IAAI,GAAa,EAAE;AAEvB,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE;YACzD,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAsB,IAAI,CAAC;YACnE,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,GAAG,KAAI;gBAC9B,IAAI,OAAO,CAAC,OAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AACtC,oBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AACtC,oBAAA,OAAO,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,WAAW,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,GAAC,WAAW,CAAC;AAC9G,gBAAA,CAAC,CAAC,IAAI,CAAC,EAAE;AACP,oBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBAChB;AACF,YAAA,CAAC,CAAC;QACJ;AAEA,QAAA,MAAM,WAAW,GAAG,CAAC,KAA8D,KAAI;AACrF,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC;AAC7D,YAAA,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,GAAG,CAAC,CAAC;AACnD,QAAA,CAAC;AAED,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACnB,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAG;gBAClB,MAAM,QAAQ,GAAG,GAAG,CAAC,gBAAgB,CAAsB,OAAO,CAAC;gBACnE,IAAI,KAAK,GAA0B,EAAE;gBACrC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,KAAG;oBAC5B,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAAC,wBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAA;AAC/C,gBAAA,CAAC,CAAC;gBACF,WAAW,CAAC,KAAK,CAAC;AACpB,YAAA,CAAC,CAAC;QACJ;aAAO;AACL,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAG;gBAClB,WAAW,CAAE,GAAG,CAAC,gBAAgB,CAAsB,OAAO,CAAC,CAAE;AACnE,YAAA,CAAC,CAAC;QACJ;QACA,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAC,IAAI,EAAE,yBAAyB,EAAC,CAAC;AAC9E,QAAA,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC;IACrC;AACF;;ACpGA;;;;;;;;;;AAUG;AAGH;;;;AAIG;AACH,MAAM,QAAQ,GAA2B,EAAE;AAE3C;MAEa,WAAW,CAAA;AADxB,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAgChC,IAAA;AA9BC;;;AAGG;AACH,IAAA,KAAK,CAAC,MAAc,EAAA;;;AAGlB,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;AACxB,YAAA,MAAM,IAAI,IAAI,CAAC,MAAM;QACvB;QAEA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;AACpC,YAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;QACtB;QAEA,OAAO,CAAA,EAAG,MAAM,CAAA,EAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAA,CAAE;IACzC;AAEA;;AAEG;IACH,OAAO,GAAA;AACL,QAAA,OAAO;AACJ,aAAA,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,KAAI;AACtB,YAAA,MAAM,CAAC,GAAW,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,EACpC,CAAC,GAAW,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG;AAChD,YAAA,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;AACvB,QAAA,CAAC,CAAC;IACN;8GA/BW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cADC,MAAM,EAAA,CAAA,CAAA;;2FAClB,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;ACrBhC;;;;;;;AAOG;AAIH;;AAEG;MACU,SAAS,CAAA;;IAGpB,aAAa,KAAK,GAAA;AAChB,QAAA,MAAM,eAAe,GAAI,UAAkB,CAAC,SAAS;AACrD,QAAA,IAAI,eAAe,EAAE,KAAK,EAAE;AAC1B,YAAA,OAAO,eAAe,CAAC,KAAK,EAAE;QAChC;;AAGA,QAAA,OAAO,IAAI,OAAO,CAAC,OAAO,IAAG;AAC3B,YAAA,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;AACxB,QAAA,CAAC,CAAC;IACJ;AAEA;;;;;AAKG;AACH,IAAA,aAAa,IAAI,CAAC,EAAU,EAAA;AAC1B,QAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,QAAQ,IAAI,EAAE,EAAE;AAC1C,YAAA,MAAM,SAAS,CAAC,KAAK,EAAE;QACzB;IACF;AAEA;;;;;;AAMG;AACH,IAAA,aAAa,QAAQ,CAAC,QAAkB,EAAE,OAAiE,EAAA;AACzG,QAAA,MAAM,eAAe,GAAI,UAAkB,CAAC,SAAS;AACrD,QAAA,IAAI,eAAe,EAAE,QAAQ,EAAE;YAC7B,OAAO,eAAe,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;QACpD;AACA,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAG;AAC5B,YAAA,UAAU,CAAC,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC;AAC5D,QAAA,CAAC,CAAC;IACJ;AAED;;AC3DD;;AAEG;;;;"}
@@ -118,12 +118,24 @@ const bsBreakpoints = {
118
118
  * @param code Bootstrap's breakpoint abbreviation.
119
119
  * @returns Media query string or _undefined_ if the code has an unknown value.
120
120
  */
121
- getQuery(code) {
121
+ getMediaQuery(code) {
122
122
  if (code in this.query) {
123
123
  return this.query[code];
124
124
  }
125
125
  return undefined;
126
126
  },
127
+ /**
128
+ * Returns the media query string array for the specified breakpoint one or more symbols.
129
+ * @param codes Bootstrap's breakpoint abbreviation list.
130
+ * @returns Media query string array for each specified code of breakpoint.
131
+ */
132
+ getMediaQueries(codes) {
133
+ const bpArray = Array.isArray(codes) ? [...codes] : [codes];
134
+ return bpArray.map(value => {
135
+ const label = this.getLabel(value);
136
+ return this.getMediaQuery(label + "AndDown") ?? "";
137
+ });
138
+ },
127
139
  /**
128
140
  * Gets the name of the media-query by its value.
129
141
  * @param query The media-query text.
@@ -160,10 +172,10 @@ const bsBreakpoints = {
160
172
  * counted by checking the query list's length.
161
173
  */
162
174
  class CuteLine {
163
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteLine, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
164
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteLine, isStandalone: true, selector: "[cute-line], [cuteLine]", host: { classAttribute: "cute-line" }, ngImport: i0 }); }
175
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteLine, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
176
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: CuteLine, isStandalone: true, selector: "[cute-line], [cuteLine]", host: { classAttribute: "cute-line" }, ngImport: i0 }); }
165
177
  }
166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteLine, decorators: [{
178
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteLine, decorators: [{
167
179
  type: Directive,
168
180
  args: [{
169
181
  selector: '[cute-line], [cuteLine]',
@@ -206,11 +218,11 @@ const TYPES = [
206
218
  CuteLine
207
219
  ];
208
220
  class CuteLineModule {
209
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteLineModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
210
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: CuteLineModule, imports: [CommonModule, CuteLine], exports: [CuteLine] }); }
211
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteLineModule, imports: [CommonModule] }); }
221
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteLineModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
222
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: CuteLineModule, imports: [CommonModule, CuteLine], exports: [CuteLine] }); }
223
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteLineModule, imports: [CommonModule] }); }
212
224
  }
213
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteLineModule, decorators: [{
225
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteLineModule, decorators: [{
214
226
  type: NgModule,
215
227
  args: [{
216
228
  imports: [CommonModule, ...TYPES],
@@ -361,10 +373,10 @@ class CuteRipple /* extends ... */ {
361
373
  ngOnDestroy() {
362
374
  RippleManager.removeRipple(this._elemRef.nativeElement);
363
375
  }
364
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteRipple /* extends ... */, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
365
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteRipple /* extends ... */, isStandalone: true, selector: "[cuteRipple]", inputs: { rippleOptions: ["cuteRipple", "rippleOptions"] }, host: { listeners: { "mousedown": "onMouseDown($event)" } }, exportAs: ["cuteRipple"], ngImport: i0 }); }
376
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteRipple /* extends ... */, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
377
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: CuteRipple /* extends ... */, isStandalone: true, selector: "[cuteRipple]", inputs: { rippleOptions: ["cuteRipple", "rippleOptions"] }, host: { listeners: { "mousedown": "onMouseDown($event)" } }, exportAs: ["cuteRipple"], ngImport: i0 }); }
366
378
  }
367
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteRipple /* extends ... */, decorators: [{
379
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteRipple /* extends ... */, decorators: [{
368
380
  type: Directive,
369
381
  args: [{
370
382
  selector: '[cuteRipple]',
@@ -603,10 +615,10 @@ class IdGenerator {
603
615
  return v.toString(16);
604
616
  });
605
617
  }
606
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IdGenerator, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
607
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IdGenerator, providedIn: 'root' }); }
618
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: IdGenerator, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
619
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: IdGenerator, providedIn: 'root' }); }
608
620
  }
609
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IdGenerator, decorators: [{
621
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: IdGenerator, decorators: [{
610
622
  type: Injectable,
611
623
  args: [{ providedIn: 'root' }]
612
624
  }] });
@@ -1167,10 +1179,10 @@ class NativeDateAdapter extends DateAdapter {
1167
1179
  }
1168
1180
  return null;
1169
1181
  }
1170
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: NativeDateAdapter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1171
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: NativeDateAdapter }); }
1182
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NativeDateAdapter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1183
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NativeDateAdapter }); }
1172
1184
  }
1173
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: NativeDateAdapter, decorators: [{
1185
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NativeDateAdapter, decorators: [{
1174
1186
  type: Injectable
1175
1187
  }], ctorParameters: () => [] });
1176
1188
  /** Checks whether a number is within a certain range. */
@@ -1194,22 +1206,22 @@ const CUTE_NATIVE_DATE_FORMATS = {
1194
1206
  };
1195
1207
 
1196
1208
  class NativeDateModule {
1197
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: NativeDateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1198
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: NativeDateModule }); }
1199
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: NativeDateModule, providers: [{ provide: DateAdapter, useClass: NativeDateAdapter }] }); }
1209
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NativeDateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1210
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: NativeDateModule }); }
1211
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NativeDateModule, providers: [{ provide: DateAdapter, useClass: NativeDateAdapter }] }); }
1200
1212
  }
1201
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: NativeDateModule, decorators: [{
1213
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NativeDateModule, decorators: [{
1202
1214
  type: NgModule,
1203
1215
  args: [{
1204
1216
  providers: [{ provide: DateAdapter, useClass: NativeDateAdapter }],
1205
1217
  }]
1206
1218
  }] });
1207
1219
  class CuteNativeDateModule {
1208
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteNativeDateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1209
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: CuteNativeDateModule }); }
1210
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteNativeDateModule, providers: [provideNativeDateAdapter()] }); }
1220
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteNativeDateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1221
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: CuteNativeDateModule }); }
1222
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteNativeDateModule, providers: [provideNativeDateAdapter()] }); }
1211
1223
  }
1212
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteNativeDateModule, decorators: [{
1224
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteNativeDateModule, decorators: [{
1213
1225
  type: NgModule,
1214
1226
  args: [{
1215
1227
  providers: [provideNativeDateAdapter()],
@@ -1255,10 +1267,10 @@ class CuteSafePipe {
1255
1267
  }
1256
1268
  return "";
1257
1269
  }
1258
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteSafePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
1259
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: CuteSafePipe, isStandalone: true, name: "safe" }); }
1270
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteSafePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
1271
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: CuteSafePipe, isStandalone: true, name: "safe" }); }
1260
1272
  }
1261
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteSafePipe, decorators: [{
1273
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteSafePipe, decorators: [{
1262
1274
  type: Pipe,
1263
1275
  args: [{
1264
1276
  name: 'safe'
@@ -1299,10 +1311,10 @@ class CuteSanitizePipe {
1299
1311
  }
1300
1312
  return "";
1301
1313
  }
1302
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteSanitizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
1303
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: CuteSanitizePipe, isStandalone: true, name: "sanitize" }); }
1314
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteSanitizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
1315
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: CuteSanitizePipe, isStandalone: true, name: "sanitize" }); }
1304
1316
  }
1305
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteSanitizePipe, decorators: [{
1317
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteSanitizePipe, decorators: [{
1306
1318
  type: Pipe,
1307
1319
  args: [{
1308
1320
  name: 'sanitize'
@@ -1422,7 +1434,7 @@ function toBgCssClass(color) {
1422
1434
  if (isExtendedColor(richThemeColor)) {
1423
1435
  themeColor = getBaseColor(richThemeColor);
1424
1436
  if (richThemeColor.endsWith("-emphasis")) {
1425
- return `bg-${themeColor}-subtle`;
1437
+ return `bg-${themeColor}-subtle text-${themeColor}-emphasis`;
1426
1438
  }
1427
1439
  // contrast
1428
1440
  return `text-bg-${themeColor}`;
@@ -1496,10 +1508,10 @@ class CuteThemeColor /* extends ... */ {
1496
1508
  textBgClass() {
1497
1509
  return toTextBgCssClass(this.color);
1498
1510
  }
1499
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteThemeColor /* extends ... */, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1500
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteThemeColor /* extends ... */, isStandalone: true, selector: "[cuteThemeColor]", inputs: { color: ["cuteThemeColor", "color"] }, providers: [{ provide: CUTE_THEME_COLOR, useExisting: CuteThemeColor }], exportAs: ["cuteThemeColor"], ngImport: i0 }); }
1511
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteThemeColor /* extends ... */, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1512
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: CuteThemeColor /* extends ... */, isStandalone: true, selector: "[cuteThemeColor]", inputs: { color: ["cuteThemeColor", "color"] }, providers: [{ provide: CUTE_THEME_COLOR, useExisting: CuteThemeColor }], exportAs: ["cuteThemeColor"], ngImport: i0 }); }
1501
1513
  }
1502
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteThemeColor /* extends ... */, decorators: [{
1514
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteThemeColor /* extends ... */, decorators: [{
1503
1515
  type: Directive,
1504
1516
  args: [{
1505
1517
  selector: '[cuteThemeColor]',
@@ -1601,10 +1613,10 @@ class CuteThemeService {
1601
1613
  ngOnDestroy() {
1602
1614
  this._mediaChange.complete();
1603
1615
  }
1604
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1605
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteThemeService, providedIn: "root" }); }
1616
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1617
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteThemeService, providedIn: "root" }); }
1606
1618
  }
1607
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteThemeService, decorators: [{
1619
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteThemeService, decorators: [{
1608
1620
  type: Injectable,
1609
1621
  args: [{
1610
1622
  providedIn: "root"