@ng-prism/core 22.5.0 → 22.7.0-beta.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 (437) hide show
  1. package/README.md +13 -9
  2. package/dist/app/canvas/canvas-bg.styles.d.ts +1 -1
  3. package/dist/app/canvas/canvas-bg.styles.d.ts.map +1 -1
  4. package/dist/app/canvas/canvas-bg.styles.js +1 -1
  5. package/dist/app/canvas/canvas-overlay-tokens.d.ts +12 -0
  6. package/dist/app/canvas/canvas-overlay-tokens.d.ts.map +1 -0
  7. package/dist/app/canvas/canvas-overlay-tokens.js +52 -0
  8. package/dist/app/canvas/prism-canvas-bg-pill.component.js +2 -2
  9. package/dist/app/canvas/prism-canvas-pin-row.component.js +2 -2
  10. package/dist/app/canvas/prism-canvas-rulers.component.d.ts +2 -0
  11. package/dist/app/canvas/prism-canvas-rulers.component.d.ts.map +1 -1
  12. package/dist/app/canvas/prism-canvas-rulers.component.js +17 -12
  13. package/dist/app/canvas/prism-canvas-toolbar.component.d.ts +25 -3
  14. package/dist/app/canvas/prism-canvas-toolbar.component.d.ts.map +1 -1
  15. package/dist/app/canvas/prism-canvas-toolbar.component.js +154 -89
  16. package/dist/app/canvas/prism-template-popover.component.d.ts.map +1 -1
  17. package/dist/app/canvas/prism-template-popover.component.js +16 -7
  18. package/dist/app/canvas/state-chips.d.ts +50 -0
  19. package/dist/app/canvas/state-chips.d.ts.map +1 -0
  20. package/dist/app/canvas/state-chips.js +40 -0
  21. package/dist/app/component-head/head-metrics.d.ts +35 -19
  22. package/dist/app/component-head/head-metrics.d.ts.map +1 -1
  23. package/dist/app/component-head/head-metrics.js +57 -27
  24. package/dist/app/component-head/pipe-facts.d.ts +9 -0
  25. package/dist/app/component-head/pipe-facts.d.ts.map +1 -0
  26. package/dist/app/component-head/pipe-facts.js +15 -0
  27. package/dist/app/component-head/prism-component-head.component.d.ts +20 -22
  28. package/dist/app/component-head/prism-component-head.component.d.ts.map +1 -1
  29. package/dist/app/component-head/prism-component-head.component.js +85 -96
  30. package/dist/app/component-head/prism-head-gauge.component.d.ts +8 -12
  31. package/dist/app/component-head/prism-head-gauge.component.d.ts.map +1 -1
  32. package/dist/app/component-head/prism-head-gauge.component.js +51 -67
  33. package/dist/app/component-head/prism-head-info.component.d.ts +14 -2
  34. package/dist/app/component-head/prism-head-info.component.d.ts.map +1 -1
  35. package/dist/app/component-head/prism-head-info.component.js +84 -20
  36. package/dist/app/component-head/prism-stat.component.d.ts +4 -5
  37. package/dist/app/component-head/prism-stat.component.d.ts.map +1 -1
  38. package/dist/app/component-head/prism-stat.component.js +16 -12
  39. package/dist/app/component-head/service-facts.d.ts +8 -0
  40. package/dist/app/component-head/service-facts.d.ts.map +1 -0
  41. package/dist/app/component-head/service-facts.js +11 -0
  42. package/dist/app/controls/boolean-control.component.js +2 -2
  43. package/dist/app/controls/json-control.component.js +2 -2
  44. package/dist/app/controls/union-control.component.js +4 -3
  45. package/dist/app/directives/resize-value.d.ts +1 -1
  46. package/dist/app/directives/resize-value.js +1 -1
  47. package/dist/app/discovery-manifest.d.ts +2 -2
  48. package/dist/app/discovery-manifest.d.ts.map +1 -1
  49. package/dist/app/discovery-manifest.js +15 -3
  50. package/dist/app/header/header-brand.d.ts +25 -0
  51. package/dist/app/header/header-brand.d.ts.map +1 -0
  52. package/dist/app/header/header-brand.js +10 -0
  53. package/dist/app/header/prism-header.component.d.ts +2 -2
  54. package/dist/app/header/prism-header.component.d.ts.map +1 -1
  55. package/dist/app/header/prism-header.component.js +73 -57
  56. package/dist/app/icons/icon-registry.d.ts.map +1 -1
  57. package/dist/app/icons/icon-registry.js +4 -1
  58. package/dist/app/index.d.ts +12 -0
  59. package/dist/app/index.d.ts.map +1 -1
  60. package/dist/app/index.js +12 -1
  61. package/dist/app/layout-menu/prism-layout-menu.component.d.ts +3 -0
  62. package/dist/app/layout-menu/prism-layout-menu.component.d.ts.map +1 -1
  63. package/dist/app/layout-menu/prism-layout-menu.component.js +72 -58
  64. package/dist/app/overview/open-in-playground.d.ts +19 -0
  65. package/dist/app/overview/open-in-playground.d.ts.map +1 -0
  66. package/dist/app/overview/open-in-playground.js +25 -0
  67. package/dist/app/overview/overview-matrix.d.ts +85 -0
  68. package/dist/app/overview/overview-matrix.d.ts.map +1 -0
  69. package/dist/app/overview/overview-matrix.js +98 -0
  70. package/dist/app/overview/overview-visibility.d.ts +10 -2
  71. package/dist/app/overview/overview-visibility.d.ts.map +1 -1
  72. package/dist/app/overview/overview-visibility.js +14 -3
  73. package/dist/app/overview/prism-overview-cell.component.d.ts +27 -2
  74. package/dist/app/overview/prism-overview-cell.component.d.ts.map +1 -1
  75. package/dist/app/overview/prism-overview-cell.component.js +145 -28
  76. package/dist/app/overview/prism-overview-matrix.component.d.ts +29 -0
  77. package/dist/app/overview/prism-overview-matrix.component.d.ts.map +1 -0
  78. package/dist/app/overview/prism-overview-matrix.component.js +155 -0
  79. package/dist/app/overview/prism-overview.component.d.ts +4 -0
  80. package/dist/app/overview/prism-overview.component.d.ts.map +1 -1
  81. package/dist/app/overview/prism-overview.component.js +37 -14
  82. package/dist/app/page-renderer/prism-page-renderer.component.js +2 -2
  83. package/dist/app/panels/a11y/a11y-core.plugin.d.ts.map +1 -1
  84. package/dist/app/panels/a11y/a11y-core.plugin.js +0 -1
  85. package/dist/app/panels/a11y/a11y-header-badge.component.d.ts +1 -4
  86. package/dist/app/panels/a11y/a11y-header-badge.component.d.ts.map +1 -1
  87. package/dist/app/panels/a11y/a11y-header-badge.component.js +8 -19
  88. package/dist/app/panels/a11y/a11y-keyboard-overlay.component.js +2 -2
  89. package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts +1 -0
  90. package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts.map +1 -1
  91. package/dist/app/panels/a11y/a11y-overlay-host.component.js +4 -3
  92. package/dist/app/panels/a11y/a11y-panel.component.d.ts +4 -1
  93. package/dist/app/panels/a11y/a11y-panel.component.d.ts.map +1 -1
  94. package/dist/app/panels/a11y/a11y-panel.component.js +32 -54
  95. package/dist/app/panels/a11y/a11y-score.component.d.ts +8 -3
  96. package/dist/app/panels/a11y/a11y-score.component.d.ts.map +1 -1
  97. package/dist/app/panels/a11y/a11y-score.component.js +19 -35
  98. package/dist/app/panels/a11y/a11y-sr-overlay.component.js +2 -2
  99. package/dist/app/panels/a11y/a11y-sr.component.js +2 -2
  100. package/dist/app/panels/a11y/a11y-summary.d.ts.map +1 -1
  101. package/dist/app/panels/a11y/a11y-summary.js +8 -1
  102. package/dist/app/panels/a11y/a11y-tree.component.js +2 -2
  103. package/dist/app/panels/a11y/a11y-violations.component.d.ts +23 -2
  104. package/dist/app/panels/a11y/a11y-violations.component.d.ts.map +1 -1
  105. package/dist/app/panels/a11y/a11y-violations.component.js +104 -89
  106. package/dist/app/panels/a11y/severity.d.ts +9 -0
  107. package/dist/app/panels/a11y/severity.d.ts.map +1 -0
  108. package/dist/app/panels/a11y/severity.js +12 -0
  109. package/dist/app/panels/controls/controls-plugin.d.ts.map +1 -1
  110. package/dist/app/panels/controls/controls-plugin.js +1 -2
  111. package/dist/app/panels/controls/non-editable-input-types.d.ts +9 -1
  112. package/dist/app/panels/controls/non-editable-input-types.d.ts.map +1 -1
  113. package/dist/app/panels/controls/non-editable-input-types.js +18 -0
  114. package/dist/app/panels/controls/prism-controls-panel.component.d.ts +2 -1
  115. package/dist/app/panels/controls/prism-controls-panel.component.d.ts.map +1 -1
  116. package/dist/app/panels/controls/prism-controls-panel.component.js +77 -59
  117. package/dist/app/panels/events/events-plugin.d.ts.map +1 -1
  118. package/dist/app/panels/events/events-plugin.js +1 -2
  119. package/dist/app/panels/events/prism-events-panel.component.d.ts +2 -0
  120. package/dist/app/panels/events/prism-events-panel.component.d.ts.map +1 -1
  121. package/dist/app/panels/events/prism-events-panel.component.js +20 -7
  122. package/dist/app/panels/events/prism-json-node.utils.d.ts +6 -0
  123. package/dist/app/panels/events/prism-json-node.utils.d.ts.map +1 -1
  124. package/dist/app/panels/events/prism-json-node.utils.js +8 -0
  125. package/dist/app/panels/panel-host/addon-panels.d.ts +11 -0
  126. package/dist/app/panels/panel-host/addon-panels.d.ts.map +1 -0
  127. package/dist/app/panels/panel-host/addon-panels.js +12 -0
  128. package/dist/app/panels/panel-host/panel-badge.d.ts +22 -0
  129. package/dist/app/panels/panel-host/panel-badge.d.ts.map +1 -1
  130. package/dist/app/panels/panel-host/panel-badge.js +56 -11
  131. package/dist/app/panels/panel-host/prism-panel-host.component.d.ts +4 -1
  132. package/dist/app/panels/panel-host/prism-panel-host.component.d.ts.map +1 -1
  133. package/dist/app/panels/panel-host/prism-panel-host.component.js +36 -70
  134. package/dist/app/pseudo/pseudo-state-marker.d.ts +32 -10
  135. package/dist/app/pseudo/pseudo-state-marker.d.ts.map +1 -1
  136. package/dist/app/pseudo/pseudo-state-marker.js +83 -67
  137. package/dist/app/pseudo/pseudo-targets.d.ts +11 -0
  138. package/dist/app/pseudo/pseudo-targets.d.ts.map +1 -0
  139. package/dist/app/pseudo/pseudo-targets.js +46 -0
  140. package/dist/app/pseudo/state-fit.d.ts +28 -0
  141. package/dist/app/pseudo/state-fit.d.ts.map +1 -0
  142. package/dist/app/pseudo/state-fit.js +97 -0
  143. package/dist/app/renderer/composition.d.ts +20 -0
  144. package/dist/app/renderer/composition.d.ts.map +1 -0
  145. package/dist/app/renderer/composition.js +26 -0
  146. package/dist/app/renderer/input-bindings.d.ts +28 -0
  147. package/dist/app/renderer/input-bindings.d.ts.map +1 -0
  148. package/dist/app/renderer/input-bindings.js +42 -0
  149. package/dist/app/renderer/known-inputs.d.ts +8 -1
  150. package/dist/app/renderer/known-inputs.d.ts.map +1 -1
  151. package/dist/app/renderer/known-inputs.js +13 -5
  152. package/dist/app/renderer/prism-renderer.component.d.ts +18 -4
  153. package/dist/app/renderer/prism-renderer.component.d.ts.map +1 -1
  154. package/dist/app/renderer/prism-renderer.component.js +78 -44
  155. package/dist/app/renderer/projectable-content.d.ts +8 -1
  156. package/dist/app/renderer/projectable-content.d.ts.map +1 -1
  157. package/dist/app/renderer/projectable-content.js +40 -29
  158. package/dist/app/renderer/rendered-key.d.ts +20 -6
  159. package/dist/app/renderer/rendered-key.d.ts.map +1 -1
  160. package/dist/app/renderer/rendered-key.js +25 -8
  161. package/dist/app/renderer/snippet-generator.d.ts +14 -2
  162. package/dist/app/renderer/snippet-generator.d.ts.map +1 -1
  163. package/dist/app/renderer/snippet-generator.js +138 -81
  164. package/dist/app/services/navigation-item.d.ts +10 -0
  165. package/dist/app/services/navigation-item.d.ts.map +1 -0
  166. package/dist/app/services/navigation-item.js +20 -0
  167. package/dist/app/services/navigation-item.types.d.ts +8 -0
  168. package/dist/app/services/navigation-item.types.d.ts.map +1 -1
  169. package/dist/app/services/prism-layout.service.d.ts +12 -0
  170. package/dist/app/services/prism-layout.service.d.ts.map +1 -1
  171. package/dist/app/services/prism-layout.service.js +17 -7
  172. package/dist/app/services/prism-manifest.service.d.ts +4 -0
  173. package/dist/app/services/prism-manifest.service.d.ts.map +1 -1
  174. package/dist/app/services/prism-manifest.service.js +4 -0
  175. package/dist/app/services/prism-navigation.service.d.ts +12 -0
  176. package/dist/app/services/prism-navigation.service.d.ts.map +1 -1
  177. package/dist/app/services/prism-navigation.service.js +85 -19
  178. package/dist/app/services/prism-panel.service.d.ts +7 -3
  179. package/dist/app/services/prism-panel.service.d.ts.map +1 -1
  180. package/dist/app/services/prism-panel.service.js +13 -4
  181. package/dist/app/services/prism-pseudo-state.service.d.ts +59 -14
  182. package/dist/app/services/prism-pseudo-state.service.d.ts.map +1 -1
  183. package/dist/app/services/prism-pseudo-state.service.js +86 -29
  184. package/dist/app/services/prism-renderer.service.d.ts +23 -0
  185. package/dist/app/services/prism-renderer.service.d.ts.map +1 -1
  186. package/dist/app/services/prism-renderer.service.js +77 -8
  187. package/dist/app/services/prism-search.service.d.ts +4 -0
  188. package/dist/app/services/prism-search.service.d.ts.map +1 -1
  189. package/dist/app/services/prism-search.service.js +29 -6
  190. package/dist/app/services/prism-theme.service.d.ts +11 -3
  191. package/dist/app/services/prism-theme.service.d.ts.map +1 -1
  192. package/dist/app/services/prism-theme.service.js +27 -19
  193. package/dist/app/services/prism-url-state.service.d.ts.map +1 -1
  194. package/dist/app/services/prism-url-state.service.js +81 -12
  195. package/dist/app/shared/badge.types.d.ts +7 -0
  196. package/dist/app/shared/badge.types.d.ts.map +1 -0
  197. package/dist/app/shared/badge.types.js +9 -0
  198. package/dist/app/shared/brand-mark.d.ts +35 -0
  199. package/dist/app/shared/brand-mark.d.ts.map +1 -0
  200. package/dist/app/shared/brand-mark.js +52 -0
  201. package/dist/app/shared/metric-bar.d.ts +6 -0
  202. package/dist/app/shared/metric-bar.d.ts.map +1 -0
  203. package/dist/app/shared/metric-bar.js +7 -0
  204. package/dist/app/shared/prism-badge.component.d.ts +21 -0
  205. package/dist/app/shared/prism-badge.component.d.ts.map +1 -0
  206. package/dist/app/shared/prism-badge.component.js +68 -0
  207. package/dist/app/shared/prism-button.component.d.ts +12 -0
  208. package/dist/app/shared/prism-button.component.d.ts.map +1 -0
  209. package/dist/app/shared/prism-button.component.js +28 -0
  210. package/dist/app/shared/prism-icon-button.component.d.ts +17 -0
  211. package/dist/app/shared/prism-icon-button.component.d.ts.map +1 -0
  212. package/dist/app/shared/prism-icon-button.component.js +37 -0
  213. package/dist/app/shared/prism-list-row.component.d.ts +17 -0
  214. package/dist/app/shared/prism-list-row.component.d.ts.map +1 -0
  215. package/dist/app/shared/prism-list-row.component.js +57 -0
  216. package/dist/app/shared/prism-logo.component.d.ts +24 -0
  217. package/dist/app/shared/prism-logo.component.d.ts.map +1 -0
  218. package/dist/app/shared/prism-logo.component.js +77 -0
  219. package/dist/app/shared/prism-metric-badge.component.d.ts +9 -4
  220. package/dist/app/shared/prism-metric-badge.component.d.ts.map +1 -1
  221. package/dist/app/shared/prism-metric-badge.component.js +33 -12
  222. package/dist/app/shared/prism-metric-card.component.d.ts +30 -0
  223. package/dist/app/shared/prism-metric-card.component.d.ts.map +1 -0
  224. package/dist/app/shared/prism-metric-card.component.js +111 -0
  225. package/dist/app/shared/prism-panel-toolbar.component.d.ts +13 -0
  226. package/dist/app/shared/prism-panel-toolbar.component.d.ts.map +1 -0
  227. package/dist/app/shared/prism-panel-toolbar.component.js +28 -0
  228. package/dist/app/shared/prism-segmented.component.d.ts +25 -0
  229. package/dist/app/shared/prism-segmented.component.d.ts.map +1 -0
  230. package/dist/app/shared/prism-segmented.component.js +77 -0
  231. package/dist/app/shared/prism-tabs.component.d.ts +44 -0
  232. package/dist/app/shared/prism-tabs.component.d.ts.map +1 -0
  233. package/dist/app/shared/prism-tabs.component.js +134 -0
  234. package/dist/app/shared/roving-focus.d.ts +13 -0
  235. package/dist/app/shared/roving-focus.d.ts.map +1 -0
  236. package/dist/app/shared/roving-focus.js +34 -0
  237. package/dist/app/shell/prism-shell.component.d.ts +13 -0
  238. package/dist/app/shell/prism-shell.component.d.ts.map +1 -1
  239. package/dist/app/shell/prism-shell.component.js +57 -28
  240. package/dist/app/shell/should-select-first.d.ts +17 -0
  241. package/dist/app/shell/should-select-first.d.ts.map +1 -0
  242. package/dist/app/shell/should-select-first.js +13 -0
  243. package/dist/app/sidebar/navigation-decorations.d.ts +23 -1
  244. package/dist/app/sidebar/navigation-decorations.d.ts.map +1 -1
  245. package/dist/app/sidebar/navigation-decorations.js +33 -2
  246. package/dist/app/sidebar/prism-sidebar.component.d.ts +5 -15
  247. package/dist/app/sidebar/prism-sidebar.component.d.ts.map +1 -1
  248. package/dist/app/sidebar/prism-sidebar.component.js +89 -77
  249. package/dist/app/theme/deprecated-tokens.d.ts +15 -0
  250. package/dist/app/theme/deprecated-tokens.d.ts.map +1 -0
  251. package/dist/app/theme/deprecated-tokens.js +22 -0
  252. package/dist/app/theme/favicon.d.ts +3 -0
  253. package/dist/app/theme/favicon.d.ts.map +1 -0
  254. package/dist/app/theme/favicon.js +3 -0
  255. package/dist/app/theme/prism-default-theme.d.ts.map +1 -1
  256. package/dist/app/theme/prism-default-theme.js +122 -66
  257. package/dist/app/theme/resolve-theme-tokens.d.ts +29 -0
  258. package/dist/app/theme/resolve-theme-tokens.d.ts.map +1 -0
  259. package/dist/app/theme/resolve-theme-tokens.js +43 -0
  260. package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts +4 -7
  261. package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts.map +1 -1
  262. package/dist/app/variant-ribbon/prism-variant-ribbon.component.js +31 -69
  263. package/dist/app/view-tab-bar/next-view-id.d.ts +7 -1
  264. package/dist/app/view-tab-bar/next-view-id.d.ts.map +1 -1
  265. package/dist/app/view-tab-bar/next-view-id.js +9 -1
  266. package/dist/app/view-tab-bar/panel-inputs.d.ts +28 -0
  267. package/dist/app/view-tab-bar/panel-inputs.d.ts.map +1 -0
  268. package/dist/app/view-tab-bar/panel-inputs.js +41 -0
  269. package/dist/app/view-tab-bar/prism-view-panel-host.component.d.ts +2 -3
  270. package/dist/app/view-tab-bar/prism-view-panel-host.component.d.ts.map +1 -1
  271. package/dist/app/view-tab-bar/prism-view-panel-host.component.js +9 -9
  272. package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts +6 -0
  273. package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts.map +1 -1
  274. package/dist/app/view-tab-bar/prism-view-tab-bar.component.js +22 -29
  275. package/dist/builder/config-loader/deprecated-options.d.ts +9 -0
  276. package/dist/builder/config-loader/deprecated-options.d.ts.map +1 -0
  277. package/dist/builder/config-loader/deprecated-options.js +34 -0
  278. package/dist/builder/manifest/composition-wrapper.generator.d.ts +14 -0
  279. package/dist/builder/manifest/composition-wrapper.generator.d.ts.map +1 -0
  280. package/dist/builder/manifest/composition-wrapper.generator.js +66 -0
  281. package/dist/builder/manifest/host-parser.d.ts +2 -0
  282. package/dist/builder/manifest/host-parser.d.ts.map +1 -1
  283. package/dist/builder/manifest/host-parser.js +9 -4
  284. package/dist/builder/manifest/manifest-imports.d.ts +34 -0
  285. package/dist/builder/manifest/manifest-imports.d.ts.map +1 -0
  286. package/dist/builder/manifest/manifest-imports.js +91 -0
  287. package/dist/builder/manifest/runtime-manifest.generator.d.ts +13 -0
  288. package/dist/builder/manifest/runtime-manifest.generator.d.ts.map +1 -1
  289. package/dist/builder/manifest/runtime-manifest.generator.js +137 -65
  290. package/dist/builder/manifest/selector-element.d.ts +16 -0
  291. package/dist/builder/manifest/selector-element.d.ts.map +1 -0
  292. package/dist/builder/manifest/selector-element.js +46 -0
  293. package/dist/builder/manifest/template-literal.d.ts +3 -0
  294. package/dist/builder/manifest/template-literal.d.ts.map +1 -0
  295. package/dist/builder/manifest/template-literal.js +4 -0
  296. package/dist/builder/plugin-runner/plugin-runner.d.ts.map +1 -1
  297. package/dist/builder/plugin-runner/plugin-runner.js +29 -26
  298. package/dist/builder/scanner/api/angular-decorators.d.ts +84 -0
  299. package/dist/builder/scanner/api/angular-decorators.d.ts.map +1 -0
  300. package/dist/builder/scanner/api/angular-decorators.js +157 -0
  301. package/dist/builder/scanner/api/component-api.extractor.d.ts +13 -0
  302. package/dist/builder/scanner/api/component-api.extractor.d.ts.map +1 -0
  303. package/dist/builder/scanner/api/component-api.extractor.js +104 -0
  304. package/dist/builder/scanner/api/doc-tags.d.ts +13 -0
  305. package/dist/builder/scanner/api/doc-tags.d.ts.map +1 -0
  306. package/dist/builder/scanner/api/doc-tags.js +101 -0
  307. package/dist/builder/scanner/api/export-index.d.ts +18 -0
  308. package/dist/builder/scanner/api/export-index.d.ts.map +1 -0
  309. package/dist/builder/scanner/api/export-index.js +22 -0
  310. package/dist/builder/scanner/api/member.extractor.d.ts +90 -0
  311. package/dist/builder/scanner/api/member.extractor.d.ts.map +1 -0
  312. package/dist/builder/scanner/api/member.extractor.js +270 -0
  313. package/dist/builder/scanner/api/pipe-api.extractor.d.ts +12 -0
  314. package/dist/builder/scanner/api/pipe-api.extractor.d.ts.map +1 -0
  315. package/dist/builder/scanner/api/pipe-api.extractor.js +52 -0
  316. package/dist/builder/scanner/api/service-api.extractor.d.ts +14 -0
  317. package/dist/builder/scanner/api/service-api.extractor.d.ts.map +1 -0
  318. package/dist/builder/scanner/api/service-api.extractor.js +119 -0
  319. package/dist/builder/scanner/api/setup.reader.d.ts +26 -0
  320. package/dist/builder/scanner/api/setup.reader.d.ts.map +1 -0
  321. package/dist/builder/scanner/api/setup.reader.js +89 -0
  322. package/dist/builder/scanner/api/type-collector.d.ts +24 -0
  323. package/dist/builder/scanner/api/type-collector.d.ts.map +1 -0
  324. package/dist/builder/scanner/api/type-collector.js +211 -0
  325. package/dist/builder/scanner/ast-utils.d.ts +8 -0
  326. package/dist/builder/scanner/ast-utils.d.ts.map +1 -1
  327. package/dist/builder/scanner/ast-utils.js +37 -1
  328. package/dist/builder/scanner/class-hierarchy.d.ts +5 -3
  329. package/dist/builder/scanner/class-hierarchy.d.ts.map +1 -1
  330. package/dist/builder/scanner/class-hierarchy.js +12 -6
  331. package/dist/builder/scanner/component.scanner.d.ts +60 -6
  332. package/dist/builder/scanner/component.scanner.d.ts.map +1 -1
  333. package/dist/builder/scanner/component.scanner.js +229 -58
  334. package/dist/builder/scanner/composition/compose-template.d.ts +36 -0
  335. package/dist/builder/scanner/composition/compose-template.d.ts.map +1 -0
  336. package/dist/builder/scanner/composition/compose-template.js +187 -0
  337. package/dist/builder/scanner/composition/declarables.d.ts +54 -0
  338. package/dist/builder/scanner/composition/declarables.d.ts.map +1 -0
  339. package/dist/builder/scanner/composition/declarables.js +182 -0
  340. package/dist/builder/scanner/composition/match-declarables.d.ts +43 -0
  341. package/dist/builder/scanner/composition/match-declarables.d.ts.map +1 -0
  342. package/dist/builder/scanner/composition/match-declarables.js +131 -0
  343. package/dist/builder/scanner/composition/read-composition.d.ts +77 -0
  344. package/dist/builder/scanner/composition/read-composition.d.ts.map +1 -0
  345. package/dist/builder/scanner/composition/read-composition.js +302 -0
  346. package/dist/builder/scanner/composition/template-elements.d.ts +12 -0
  347. package/dist/builder/scanner/composition/template-elements.d.ts.map +1 -0
  348. package/dist/builder/scanner/composition/template-elements.js +41 -0
  349. package/dist/builder/scanner/entry-point-discovery.d.ts +5 -0
  350. package/dist/builder/scanner/entry-point-discovery.d.ts.map +1 -1
  351. package/dist/builder/scanner/entry-point-discovery.js +14 -0
  352. package/dist/builder/scanner/entry-point.scanner.d.ts +3 -1
  353. package/dist/builder/scanner/entry-point.scanner.d.ts.map +1 -1
  354. package/dist/builder/scanner/entry-point.scanner.js +7 -6
  355. package/dist/builder/scanner/index.d.ts +4 -0
  356. package/dist/builder/scanner/index.d.ts.map +1 -1
  357. package/dist/builder/scanner/index.js +2 -0
  358. package/dist/builder/scanner/input.extractor.d.ts +31 -2
  359. package/dist/builder/scanner/input.extractor.d.ts.map +1 -1
  360. package/dist/builder/scanner/input.extractor.js +73 -17
  361. package/dist/builder/scanner/pipe.scanner.d.ts +29 -0
  362. package/dist/builder/scanner/pipe.scanner.d.ts.map +1 -0
  363. package/dist/builder/scanner/pipe.scanner.js +65 -0
  364. package/dist/builder/scanner/pseudo-states.d.ts +1 -0
  365. package/dist/builder/scanner/pseudo-states.d.ts.map +1 -1
  366. package/dist/builder/scanner/pseudo-states.js +1 -1
  367. package/dist/builder/scanner/scanner.d.ts +27 -3
  368. package/dist/builder/scanner/scanner.d.ts.map +1 -1
  369. package/dist/builder/scanner/scanner.js +68 -24
  370. package/dist/builder/scanner/service/angular-decorators.d.ts +80 -0
  371. package/dist/builder/scanner/service/angular-decorators.d.ts.map +1 -0
  372. package/dist/builder/scanner/service/angular-decorators.js +154 -0
  373. package/dist/builder/scanner/service/doc-tags.d.ts +13 -0
  374. package/dist/builder/scanner/service/doc-tags.d.ts.map +1 -0
  375. package/dist/builder/scanner/service/doc-tags.js +97 -0
  376. package/dist/builder/scanner/service/export-index.d.ts +18 -0
  377. package/dist/builder/scanner/service/export-index.d.ts.map +1 -0
  378. package/dist/builder/scanner/service/export-index.js +22 -0
  379. package/dist/builder/scanner/service/member.extractor.d.ts +65 -0
  380. package/dist/builder/scanner/service/member.extractor.d.ts.map +1 -0
  381. package/dist/builder/scanner/service/member.extractor.js +216 -0
  382. package/dist/builder/scanner/service/pipe-api.extractor.d.ts +12 -0
  383. package/dist/builder/scanner/service/pipe-api.extractor.d.ts.map +1 -0
  384. package/dist/builder/scanner/service/pipe-api.extractor.js +72 -0
  385. package/dist/builder/scanner/service/service-api.extractor.d.ts +14 -0
  386. package/dist/builder/scanner/service/service-api.extractor.d.ts.map +1 -0
  387. package/dist/builder/scanner/service/service-api.extractor.js +119 -0
  388. package/dist/builder/scanner/service/setup.reader.d.ts +26 -0
  389. package/dist/builder/scanner/service/setup.reader.d.ts.map +1 -0
  390. package/dist/builder/scanner/service/setup.reader.js +89 -0
  391. package/dist/builder/scanner/service/type-collector.d.ts +23 -0
  392. package/dist/builder/scanner/service/type-collector.d.ts.map +1 -0
  393. package/dist/builder/scanner/service/type-collector.js +210 -0
  394. package/dist/builder/scanner/service.scanner.d.ts +26 -0
  395. package/dist/builder/scanner/service.scanner.d.ts.map +1 -0
  396. package/dist/builder/scanner/service.scanner.js +61 -0
  397. package/dist/builder/scanner/showcase-diagnostics.d.ts +60 -1
  398. package/dist/builder/scanner/showcase-diagnostics.d.ts.map +1 -1
  399. package/dist/builder/scanner/showcase-diagnostics.js +123 -10
  400. package/dist/builder/scanner/showcase-states.d.ts +17 -0
  401. package/dist/builder/scanner/showcase-states.d.ts.map +1 -0
  402. package/dist/builder/scanner/showcase-states.js +58 -0
  403. package/dist/builder/scanner/source-file-cache.d.ts +26 -0
  404. package/dist/builder/scanner/source-file-cache.d.ts.map +1 -0
  405. package/dist/builder/scanner/source-file-cache.js +60 -0
  406. package/dist/builder/shared/prism-pipeline.d.ts +6 -0
  407. package/dist/builder/shared/prism-pipeline.d.ts.map +1 -1
  408. package/dist/builder/shared/prism-pipeline.js +71 -18
  409. package/dist/decorator/index.d.ts +1 -1
  410. package/dist/decorator/index.d.ts.map +1 -1
  411. package/dist/decorator/showcase.types.d.ts +102 -9
  412. package/dist/decorator/showcase.types.d.ts.map +1 -1
  413. package/dist/plugin/index.d.ts +6 -1
  414. package/dist/plugin/index.d.ts.map +1 -1
  415. package/dist/plugin/index.js +4 -0
  416. package/dist/plugin/pipe.types.d.ts +36 -0
  417. package/dist/plugin/pipe.types.d.ts.map +1 -0
  418. package/dist/plugin/pipe.types.js +1 -0
  419. package/dist/plugin/plugin.types.d.ts +184 -8
  420. package/dist/plugin/plugin.types.d.ts.map +1 -1
  421. package/dist/plugin/service.types.d.ts +124 -0
  422. package/dist/plugin/service.types.d.ts.map +1 -0
  423. package/dist/plugin/service.types.js +1 -0
  424. package/dist/plugin/status.d.ts +27 -0
  425. package/dist/plugin/status.d.ts.map +1 -0
  426. package/dist/plugin/status.js +26 -0
  427. package/dist/shared/composition.d.ts +30 -0
  428. package/dist/shared/composition.d.ts.map +1 -0
  429. package/dist/shared/composition.js +29 -0
  430. package/dist/shared/pseudo-state.type.d.ts +2 -1
  431. package/dist/shared/pseudo-state.type.d.ts.map +1 -1
  432. package/dist/shared/void-elements.d.ts +3 -0
  433. package/dist/shared/void-elements.d.ts.map +1 -0
  434. package/dist/shared/void-elements.js +2 -0
  435. package/package.json +1 -1
  436. package/src/builder/build/schema.json +6 -6
  437. package/src/builder/serve/schema.json +6 -6
@@ -1,4 +1,6 @@
1
- import { computed, inject, Injectable, signal } from '@angular/core';
1
+ import { computed, effect, inject, Injectable, signal, untracked } from '@angular/core';
2
+ import { COMPOSITION_SUBJECT_ATTR } from '../../shared/composition.js';
3
+ import { activeCase } from '../renderer/composition.js';
2
4
  import { PrismNavigationService } from './prism-navigation.service.js';
3
5
  import * as i0 from "@angular/core";
4
6
  export function computeVariantState(comp, index, options = {}) {
@@ -31,14 +33,32 @@ export function computeVariantState(comp, index, options = {}) {
31
33
  ...defaults,
32
34
  ...filteredVariantInputs
33
35
  };
34
- if (comp.meta.componentMeta.isDirective && variant?.content) {
35
- values['__prismContent__'] = typeof variant.content === 'string' ? variant.content : '';
36
+ const hostContent = directiveHostContent(comp, index);
37
+ if (hostContent !== undefined) {
38
+ values['__prismContent__'] = hostContent;
36
39
  }
37
40
  return {
38
41
  values,
39
- activeContent: comp.meta.componentMeta.isDirective ? undefined : variant?.content
42
+ activeContent: projectedContent(comp, index)
40
43
  };
41
44
  }
45
+ /**
46
+ * The text `content` the `__PrismHost` of a directive renders through `__prismContent__`, `undefined` for a variant
47
+ * without content, a component, or a composed variant, whose template holds the content and whose wrapper does not
48
+ * declare `__prismContent__`.
49
+ */
50
+ function directiveHostContent(comp, index) {
51
+ const content = comp.meta.showcaseConfig.variants?.[index]?.content;
52
+ if (!comp.meta.componentMeta.isDirective || !content || activeCase(comp, index))
53
+ return undefined;
54
+ return typeof content === 'string' ? content : '';
55
+ }
56
+ /** The `content` the renderer projects into a component, `undefined` for a directive and for a composed variant. */
57
+ function projectedContent(comp, index) {
58
+ if (comp.meta.componentMeta.isDirective || activeCase(comp, index))
59
+ return undefined;
60
+ return comp.meta.showcaseConfig.variants?.[index]?.content;
61
+ }
42
62
  function valuesEqual(a, b) {
43
63
  if (a === b)
44
64
  return true;
@@ -57,12 +77,32 @@ export class PrismRendererService {
57
77
  navigationService = inject(PrismNavigationService);
58
78
  activeVariantIndex = signal(0, /* @ts-ignore */
59
79
  ...(ngDevMode ? [{ debugName: "activeVariantIndex" }] : /* istanbul ignore next */ []));
80
+ /**
81
+ * Position in `ShowcaseConfig.states` of the component-level state on the
82
+ * canvas, `null` for none. Part of the addressed cell next to the variant:
83
+ * it survives a variant change and goes with the component.
84
+ */
85
+ activeStateIndex = signal(null, /* @ts-ignore */
86
+ ...(ngDevMode ? [{ debugName: "activeStateIndex" }] : /* istanbul ignore next */ []));
60
87
  inputValues = signal({}, /* @ts-ignore */
61
88
  ...(ngDevMode ? [{ debugName: "inputValues" }] : /* istanbul ignore next */ []));
62
89
  activeContent = signal(undefined, /* @ts-ignore */
63
90
  ...(ngDevMode ? [{ debugName: "activeContent" }] : /* istanbul ignore next */ []));
64
91
  renderedElement = signal(null, /* @ts-ignore */
65
92
  ...(ngDevMode ? [{ debugName: "renderedElement" }] : /* istanbul ignore next */ []));
93
+ /**
94
+ * The element of the showcased component or directive in what the canvas
95
+ * renders: in a composition the one the wrapper marks, else the rendered
96
+ * element itself. `null` while nothing is rendered. Since 22.7.0.
97
+ */
98
+ subjectElement = computed(() => {
99
+ const root = this.renderedElement();
100
+ if (!root)
101
+ return null;
102
+ const selector = `[${COMPOSITION_SUBJECT_ATTR}]`;
103
+ return root.matches(selector) ? root : (root.querySelector(selector) ?? root);
104
+ }, /* @ts-ignore */
105
+ ...(ngDevMode ? [{ debugName: "subjectElement" }] : /* istanbul ignore next */ []));
66
106
  dirtyInputCount = computed(() => {
67
107
  const comp = this.navigationService.activeComponent();
68
108
  if (!comp)
@@ -78,20 +118,45 @@ export class PrismRendererService {
78
118
  return count;
79
119
  }, /* @ts-ignore */
80
120
  ...(ngDevMode ? [{ debugName: "dirtyInputCount" }] : /* istanbul ignore next */ []));
121
+ /** The component the variant, the state and the inputs belong to, `null` before the first. */
81
122
  _lastClassName = null;
123
+ constructor() {
124
+ // The variant and the state go with the component in every view, so the reset on a switch follows
125
+ // navigation, not the renderer: the shell mounts `<prism-renderer>` in the Playground only, and the Overview
126
+ // keeps its view when the sidebar picks another component. A root effect, created before the URL service's,
127
+ // so it runs first in the same flush and the URL never sees the previous component's cell on the new one.
128
+ effect(() => {
129
+ const comp = this.navigationService.activeComponent();
130
+ if (comp)
131
+ untracked(() => this.reconcileForComponent(comp));
132
+ });
133
+ }
82
134
  resetForComponent(comp) {
83
135
  this._lastClassName = comp.meta.className;
84
136
  this.activeVariantIndex.set(0);
137
+ this.activeStateIndex.set(null);
85
138
  this.applyVariant(0, comp);
86
139
  }
140
+ /**
141
+ * Brings the variant, the state and the inputs in line with `comp`: a full
142
+ * reset when it is another component than the last one, else the variant
143
+ * and the state clamped to what it still declares and the inputs kept.
144
+ * Runs on every navigation and again when the renderer mounts, which then
145
+ * finds the component current and keeps what an Overview cell or a restore
146
+ * selected.
147
+ */
87
148
  reconcileForComponent(comp) {
88
149
  const prev = this._lastClassName;
89
150
  this._lastClassName = comp.meta.className;
90
151
  if (prev !== null && prev !== comp.meta.className) {
91
152
  this.activeVariantIndex.set(0);
153
+ this.activeStateIndex.set(null);
92
154
  this.applyVariant(0, comp);
93
155
  return;
94
156
  }
157
+ const stateIndex = this.activeStateIndex();
158
+ if (stateIndex !== null && stateIndex >= (comp.meta.showcaseConfig.states?.length ?? 0))
159
+ this.activeStateIndex.set(null);
95
160
  const variants = comp.meta.showcaseConfig.variants ?? [];
96
161
  const maxIndex = Math.max(0, variants.length - 1);
97
162
  const preservedIndex = Math.min(this.activeVariantIndex(), maxIndex);
@@ -113,11 +178,12 @@ export class PrismRendererService {
113
178
  const variant = variants[preservedIndex];
114
179
  const variantInputs = variant?.inputs ?? {};
115
180
  const merged = { ...defaults, ...variantInputs, ...preserved };
116
- if (comp.meta.componentMeta.isDirective && variant?.content && preserved['__prismContent__'] === undefined) {
117
- merged['__prismContent__'] = typeof variant.content === 'string' ? variant.content : '';
181
+ const hostContent = directiveHostContent(comp, preservedIndex);
182
+ if (hostContent !== undefined && preserved['__prismContent__'] === undefined) {
183
+ merged['__prismContent__'] = hostContent;
118
184
  }
119
185
  this.inputValues.set(merged);
120
- this.activeContent.set(comp.meta.componentMeta.isDirective ? undefined : variant?.content);
186
+ this.activeContent.set(projectedContent(comp, preservedIndex));
121
187
  }
122
188
  selectVariant(index) {
123
189
  this.activeVariantIndex.set(index);
@@ -125,6 +191,9 @@ export class PrismRendererService {
125
191
  if (comp)
126
192
  this.applyVariant(index, comp);
127
193
  }
194
+ selectState(index) {
195
+ this.activeStateIndex.set(index);
196
+ }
128
197
  updateInput(name, value) {
129
198
  this.inputValues.update((prev) => ({ ...prev, [name]: value }));
130
199
  }
@@ -147,4 +216,4 @@ export class PrismRendererService {
147
216
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismRendererService, [{
148
217
  type: Injectable,
149
218
  args: [{ providedIn: 'root' }]
150
- }], null, null); })();
219
+ }], () => [], null); })();
@@ -1,9 +1,13 @@
1
1
  import type { StyleguidePage } from '../../plugin/page.types.js';
2
+ import type { RuntimePipe } from '../../plugin/pipe.types.js';
3
+ import type { RuntimeService } from '../../plugin/service.types.js';
2
4
  import * as i0 from "@angular/core";
3
5
  export declare class PrismSearchService {
4
6
  private readonly manifestService;
5
7
  readonly query: import("@angular/core").WritableSignal<string>;
6
8
  readonly filteredComponents: import("@angular/core").Signal<import("../../index.js").RuntimeComponent[]>;
9
+ readonly filteredServices: import("@angular/core").Signal<RuntimeService[]>;
10
+ readonly filteredPipes: import("@angular/core").Signal<RuntimePipe[]>;
7
11
  readonly filteredPages: import("@angular/core").Signal<StyleguidePage[]>;
8
12
  search(q: string): void;
9
13
  clear(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"prism-search.service.d.ts","sourceRoot":"","sources":["../../../src/app/services/prism-search.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;;AAGjE,qBACa,kBAAkB;IAC3B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgC;IAEhE,QAAQ,CAAC,KAAK,iDAAc;IAE5B,QAAQ,CAAC,kBAAkB,8EAcxB;IAEH,QAAQ,CAAC,aAAa,mDAMnB;IAEH,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAIvB,KAAK,IAAI,IAAI;yCAjCJ,kBAAkB;;CAoC9B"}
1
+ {"version":3,"file":"prism-search.service.d.ts","sourceRoot":"","sources":["../../../src/app/services/prism-search.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;;AAkBpE,qBACa,kBAAkB;IAC3B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgC;IAEhE,QAAQ,CAAC,KAAK,iDAAc;IAE5B,QAAQ,CAAC,kBAAkB,8EAMxB;IAEH,QAAQ,CAAC,gBAAgB,mDAMtB;IAEH,QAAQ,CAAC,aAAa,gDAMnB;IAEH,QAAQ,CAAC,aAAa,mDAMnB;IAEH,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAIvB,KAAK,IAAI,IAAI;yCAzCJ,kBAAkB;;CA4C9B"}
@@ -1,6 +1,18 @@
1
1
  import { computed, inject, Injectable, signal } from '@angular/core';
2
2
  import { PrismManifestService } from './prism-manifest.service.js';
3
3
  import * as i0 from "@angular/core";
4
+ /**
5
+ * Whether a showcased item matches a query that is already lowercased and
6
+ * trimmed: its title, category or tags, or one of `names`, the identifiers
7
+ * that only some kinds have (a service's class name, a pipe's class name and
8
+ * template name).
9
+ */
10
+ function matchesQuery(q, config, names = []) {
11
+ return (config.title.toLowerCase().includes(q) ||
12
+ names.some((name) => name.toLowerCase().includes(q)) ||
13
+ (config.category?.toLowerCase().includes(q) ?? false) ||
14
+ (config.tags?.some((t) => t.toLowerCase().includes(q)) ?? false));
15
+ }
4
16
  export class PrismSearchService {
5
17
  manifestService = inject(PrismManifestService);
6
18
  query = signal('', /* @ts-ignore */
@@ -10,14 +22,25 @@ export class PrismSearchService {
10
22
  const all = this.manifestService.components();
11
23
  if (!q)
12
24
  return all;
13
- return all.filter((comp) => {
14
- const config = comp.meta.showcaseConfig;
15
- return (config.title.toLowerCase().includes(q) ||
16
- (config.category?.toLowerCase().includes(q) ?? false) ||
17
- (config.tags?.some((t) => t.toLowerCase().includes(q)) ?? false));
18
- });
25
+ return all.filter((comp) => matchesQuery(q, comp.meta.showcaseConfig));
19
26
  }, /* @ts-ignore */
20
27
  ...(ngDevMode ? [{ debugName: "filteredComponents" }] : /* istanbul ignore next */ []));
28
+ filteredServices = computed(() => {
29
+ const q = this.query().toLowerCase().trim();
30
+ const all = this.manifestService.services();
31
+ if (!q)
32
+ return all;
33
+ return all.filter((service) => matchesQuery(q, service.meta.showcaseConfig, [service.meta.className]));
34
+ }, /* @ts-ignore */
35
+ ...(ngDevMode ? [{ debugName: "filteredServices" }] : /* istanbul ignore next */ []));
36
+ filteredPipes = computed(() => {
37
+ const q = this.query().toLowerCase().trim();
38
+ const all = this.manifestService.pipes();
39
+ if (!q)
40
+ return all;
41
+ return all.filter((pipe) => matchesQuery(q, pipe.meta.showcaseConfig, [pipe.meta.className, pipe.meta.pipeName]));
42
+ }, /* @ts-ignore */
43
+ ...(ngDevMode ? [{ debugName: "filteredPipes" }] : /* istanbul ignore next */ []));
21
44
  filteredPages = computed(() => {
22
45
  const q = this.query().toLowerCase().trim();
23
46
  const all = this.manifestService.pages();
@@ -2,9 +2,17 @@ import * as i0 from "@angular/core";
2
2
  export declare class PrismThemeService {
3
3
  readonly theme: import("@angular/core").WritableSignal<"light" | "dark">;
4
4
  readonly isDark: import("@angular/core").Signal<boolean>;
5
- private configOverrides;
6
- private darkOverrides;
7
- private lightOverrides;
5
+ private readonly overrides;
6
+ /** Every token of the active mode, including the user's overrides. */
7
+ readonly appTokens: import("@angular/core").Signal<Record<string, string>>;
8
+ /**
9
+ * The dark set, for the header: since 22.7 it is a navy brand band in both
10
+ * themes. Bound as an inline style on the header host, so tokens composed
11
+ * from others (tints, status surfaces) are evaluated there again rather than
12
+ * inherited already resolved against the light theme.
13
+ */
14
+ readonly headerTokens: import("@angular/core").Signal<Record<string, string>>;
15
+ private readonly warnedDeprecations;
8
16
  constructor();
9
17
  toggle(): void;
10
18
  applyConfigOverrides(config: {
@@ -1 +1 @@
1
- {"version":3,"file":"prism-theme.service.d.ts","sourceRoot":"","sources":["../../../src/app/services/prism-theme.service.ts"],"names":[],"mappings":";AAMA,qBACa,iBAAiB;IAC1B,QAAQ,CAAC,KAAK,2DAAoD;IAClE,QAAQ,CAAC,MAAM,0CAA2C;IAE1D,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,cAAc,CAA8B;;IAapD,MAAM,IAAI,IAAI;IAId,oBAAoB,CAAC,MAAM,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,IAAI;IAO/I,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,eAAe;yCA5Dd,iBAAiB;;CAsE7B"}
1
+ {"version":3,"file":"prism-theme.service.d.ts","sourceRoot":"","sources":["../../../src/app/services/prism-theme.service.ts"],"names":[],"mappings":";AAOA,qBACa,iBAAiB;IAC1B,QAAQ,CAAC,KAAK,2DAAoD;IAClE,QAAQ,CAAC,MAAM,0CAA2C;IAE1D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8B;IAExD,sEAAsE;IACtE,QAAQ,CAAC,SAAS,yDAA6E;IAE/F;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,yDAAuE;IAE5F,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;;IAaxD,MAAM,IAAI,IAAI;IAId,oBAAoB,CAAC,MAAM,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,IAAI;IAK/I,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,eAAe;yCAjEd,iBAAiB;;CA2E7B"}
@@ -1,16 +1,28 @@
1
1
  import { computed, effect, Injectable, signal } from '@angular/core';
2
- import { PRISM_BASE_TOKENS, PRISM_DARK_THEME, PRISM_LIGHT_THEME } from '../theme/prism-default-theme.js';
2
+ import { deprecatedTokenNotice } from '../theme/deprecated-tokens.js';
3
+ import { FAVICON_SVG_DATA_URI } from '../theme/favicon.js';
4
+ import { resolveThemeTokens } from '../theme/resolve-theme-tokens.js';
3
5
  import * as i0 from "@angular/core";
4
6
  const STORAGE_KEY = 'ng-prism-theme';
5
- const FAVICON_DATA_URI = `data:image/x-icon;base64,AAABAAMAMDAAAAEAIACoJQAANgAAACAgAAABACAAqBAAAN4lAAAQEAAAAQAgAGgEAACGNgAAKAAAADAAAABgAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJIktgeAIL8IgAC/CIAAvwiAIL8IgCC/CIAgvwiAIL8IgCC/CIAgvwiAIL8InyCfCJ8gnwifIJ8InyCfCJ8ggAi/IIAIvyCACL8ggAi/IIAIvyBgCL8gYAi/IGAIvyBgCL8gQAjfIEAI3yBACN8gQAjfQCAI30AgCN9AIAjfQCAI30AgCN9AIAjfQCAI/0AgCN9AIAj/QCAI/2BACONVOQn/YEAI/2BACP9gQAjjVTkJ/2BACP9gQAj/YEAI/4BVBo423a6CF8fwgRDB8IEQwvCBEMLwgRDC8IIQwvCDEMLwgxHC8IMRwPCHEbzwmRKq758Sou+hEpzvpRKU76oTje+vFIbwtBR+8LcVd/C7FnDwvhho8MEbYfDGHljwyCBR8MsjSfDOJ0Hx0ik48dUtMPHWMSfx1jMl8dczJfHXNCXy2jcm8905JvPhPCf25D4n9uhCKfLsSCrz91sv8/dhMff4YTLy+WEx8fdiL/f3YTD4+WEx9PlhMfT4ZTzx9XBmqpdO7zGYT/P6jDHc/4ETxP+BEcP/ghDC/4MRwv+DEcL/gxHC/4QRwf+GEbz/ixG1/50SpP+iE5v/phKU/6sTjP+vFIX/sxR9/7cVdv+6F27/vhhn/8EbYP/FHlf/yCBQ/8siSP/OJkD/0Sk4/9UtLv/WMCb/1jIl/9cyJf/YMyX/3DYm/985Jv/iOyf/5T8o/+1HKv/2Vi7/+Vwv//lfMP/6YTD/+2Iw//tiMP/7YzH/+2Q3//txYf/6fIb57n2OLf8A/wGXUPKdmVH2/5ZK7/+KKdX/gRLE/4IRwv+DEcL/gxHC/4QRwf+FEb3/hxG5/40Qsf+fEp7/phKT/6sTi/+vFIT/sxR8/7cVdf+6F27/vhhn/8EbYP/EHVj/yCBQ/8siSP/OJkD/0Sk4/9UtLv/WMSb/1jIl/9YyJf/YMyX/3DYm/985Jv/hOyf/7Ecq//ZVLv/4WS//+Fwv//leMP/6YTD/+2Ix//tkNP/7bVT/+nuA//t9iv74e4mX/wAAAQAAAACZR+sZmVH17ptU9/+bVPb/l0fr/4ghz/+DE8T/gxHC/4QRwP+FEb3/iBG5/4oRtP+QEKz/oxKW/6oTi/+vFIT/sxR9/7cVdv+6F2//vhho/8EbYP/FHlj/yCBQ/8siSP/OJkD/0Sk4/9UtLv/WMSb/1jIl/9YyJf/XMyX/2zYm/986Jv/sRyn/9FEt//ZVLv/3WC//+Vwv//lfMf/7YjT/+2pK//p6ff/7f43/+3+M//p+iuvzdIsWAAAAAAAAAACAgP8CmFDzfJpU9/2cVff/nFX3/5xU9f+UQef/hhrJ/4QTwf+GEb3/hxG5/4oRtP+NEK7/khCk/6YTj/+uFIX/sxR9/7YVdv+6F2//vhho/8EbYP/EHVj/xyBQ/8siSP/PJkD/0ik4/9UtLv/WMSb/1jIl/9YyJf/YMyX/3jgm/+tEKf/yTSv/9VIu//ZVLv/4WS//+V0z//pmQv/6eXv/+4CQ//uAkf/7gJD/+n+O/fZ+jnX/gIACAAAAAAAAAAAAAAAAlVXqDJlS9teaVPf/nFb3/5xW9/+cVvf/m1L0/5I64f+HF8L/iBO7/4oRtf+NEK7/kBCn/5YQnv+qE4r/shR+/7YVd/+6F3D/vRho/8EbYf/EHVj/xx9Q/8siSf/OJkD/0ik3/9UtLv/WMSb/1jIl/9YyJf/bNSb/60Up//FLK//zTiv/9VIu//ZXMv/4XTn/+nZ2//qBlv/7gpj/+4KW//uBk//7gZL/+YCQ0f90iwsAAAAAAAAAAAAAAAAAAAAAgID/AplO8FWbVPf6m1X4/5xW9/+cVvf/nFb3/5tU9/+aTvH/kC7U/4sVuP+NEq//jxCo/5MQoP+aEZj/rBSD/7YVd/+6FnD/vRho/8EbYf/EHVn/xx9R/8siSf/OJUH/0ik3/9UtLv/WMSb/1zIl/9s2Jv/rRCr/8Uor//NNK//0UjD/9Vk5//l6df/6gZj/+4Og//uDnv/7g5r/+4OY//uDl//7gpb59YCUTP+AgAIAAAAAAAAAAAAAAAAAAAAAAAAAAJJJ/weYUPS9mlT3/5xW9/+dVvf/nVb3/5xW9/+dVvf/nVT2/5xN7P+iO8T/lh2s/5QTov+XEZr/nhKR/68Vff+5FnH/vRhp/8EbYf/EHVn/xx9R/8siSf/OJUH/0ik3/9UtLv/XMSf/3Tcm/+xFKv/vSCv/8U4v//RYNf/3fmT/+oie//uGpv/7haX/+4Wi//uEoP/7g57/+4Oc//uDmf/4gpe4/22SBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICA/wKXTuoxmlL39ZxV+P+dVvf/nlf3/55X9/+dV/f/nVb3/59a9/+ycvb/4Kzq/6k5tP+dHaD/nBST/6IUif+yFnf/vBhq/8EaYf/EHVn/xyBR/8oiSf/OJUH/0Sk4/9YtLv/fOCj/60Mq/+9JLf/xUjT/9W9N//vAiv/7pZ//+4mq//qGqf/6haf/+oWl//uFo//7hKH/+4Sf//qEn/TzhZcs/4CAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSSdsHmlL2pJxV+P6cVvf/nlf3/55W9/+eV/f/nlf3/55X9/+lYfj/47P8//HF+P/gq+L/qzGj/6UekP+nF4D/tRhv/8AaYf/EHVn/xyBR/8siSf/OJUH/0yo4/+E3Lv/rQyz/7k4z//JiQv/6vZP//c6B//zFg//7j6v/+oet//qHrf/6hqr/+oWn//uFpf/7haT/+4Wi/veEoJ7/gKoGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AP8BlUrqGJtT9uqbVff/nVb3/51X9/+eWPf/nlj4/55Y9/+fWff/sG/5/+/C/P/1y/z/8cT2/9uY0v+yMJD/sSF4/7kcY//DHVj/xyBR/8oiSf/QJ0D/4TY1/+tGNP/vWj7/+bKR//zMg//90n7//c19//uZpv/7irD/+4iw//uIrv/6h6z/+oaq//qGqP/7hab/+YWk5v+MphT/AAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgFXUBptS8X2bVPf7nFb4/51X9/+eV/f/nlj4/55X9/+eWPj/pF74/9Gb+//zx/z/9cr9//XL/P/vwfD/1X21/700dv+/Jlz/xiBQ/84lR//iOjz/7FJD//abgP/8yYX//dJ///3Re//90Hv//LqO//uPsv/7irT/+4my//uJsf/7iK//+oet//uHq//7hqn69Iamcv+ZmQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ9Q7xCZUvXTm1X3/51W9/+eV/f/nlf4/55Y+P+eWPj/nlj3/6to+f/puvz/9cr9//XK/f/1yv3/9Mr6/+++5//VbpX/zz1e/+RKSf/yg23/+8aL//3Rgf/90Xz//dF7//3Re//9yYH/+5ev//uMuP/6i7f/+4u1//uKtP/7ibH/+4mx//uIrv/5iK3N7oiqDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL9A/wSYT/JNmlP395xW9/+dV/f/nlf3/55X9/+eV/f/n1j4/6Jc+P+8fvr/8cX9//XK/f/1yv3/9cr9//bN/f/3zvf/+MjX//rHnP/8z4H//dF9//3Rfv/90X7//dF9//3Pf//7qaT/+o+6//qMu//6jLr/+oy4//qLt//7i7X/+4q0//uJsvX0ia9D/4C/BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACdTv8NmlL0vptU9/+dV/f/nVf3/55Y9/+fWPj/n1n4/59Z+P+nY/j/3qz8//TJ/f/1yv3/9cr9//XM/f/30P3/+tvw//3Wmf/90ID//dCB//3Qgv/90IL//dCC//zCkv/6lbz/+o7B//qNv//6jL3/+oy7//qMu//6jLj/+4u3//mLtbf/laoMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVf8DmFH0L5tT+O+cVvf/nVb3/55X9/+eWPj/nlj4/59Y+P+gWvj/tHT5/+7A/P/1yv3/9cr9//XM/f/30P3/+trx//3Vn//90Ij//c+J//3Pif/90Ij//cyO//uiuP/7kcX/+o/E//mPw//6jsH/+o2///qMvf/6jLv/+oy67fmPtCn/VaoDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAi0boC5tT9aCcVPf+nVb3/55X9/+eWPj/nlj4/59Y+P+fWPj/o1/4/8+Y+//zx/z/9cr9//XM/f/30P3/+tvx//3Upf/9zpL//c6S//3Okv/9zpT//Lmx//uXyP/7ksn/+5HH//uQxf/6j8P/+o7B//qNwP/7jb7994y8mf+AswoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wD/AZlV7h6bVPblnFX3/51W9/+dV/f/nlf3/55X9/+eV/f/nlj4/61r+f/oufz/9cr9//XM/f/30P3/+try//3Srv/9zJz//cyd//3Mnf/8yKv/+6LM//qVzv/6k8z/+5LK//uSyP/7kcb/+o/E//qOw//6j8Ph9o69G////wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ9g/wiZUvJ2m1T3+pxV9/+dVvf/nVf3/55X9/+eV/j/nlj4/6Fc+P/Ch/r/8cT8//XM/f/30P3/+tn0//3QuP/9yqn//cqp//3Jr//7ss3/+prS//qX0f/6ls//+5TM//uTy//7ksn/+5LI//qPxfn1jsNq/5LbBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSVfMVmlP315tU9/+dVvf/nlf3/55Y+P+eWPj/n1j4/59Z+P+oZfn/3638//XL/f/30P3/+tn1//3Mwv/9xrb//ce4//zDz//6otj/+prW//qY0//6l9H/+pXP//qUzP/7k8v/+5LJ//mSxtL/lMkTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAVdQGmlDxSZtT9/ScVff/nlf4/55Y+P+fWPj/n1j4/59Y+P+gWvj/uHr5/+7D/P/30f3/+tj3//zKzf/8xMP//MbO//uv3//5ntz/+ZzY//qa1v/6mNT/+pfS//qW0P/6lM3/+5TM8vOQxT7/mcwFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkvwEZlR9MGbVPf/nVf4/55Y+P+fWPj/n1j4/55Y+P+eWPj/pGD4/9Of+//1zv3/+tf4//zH2P/8xNP/+7/l//qk4v/6nt7/+p3b//mc2f/6mtb/+pjU//qX0v/6ltH/95XOt/+ZzA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgEC/BJhR7y+bVPbtnVb4/55Y+P+eWPj/n1j4/59Z+P+fWPj/n1n4/7Bv+f/rwPz/+db5//vH4//8yOj/+q7o//qi4//6oOH/+p/e//qe3P/5nNn/+ZrX//qa1v/6l9Pq85XTKf+qqgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ1O6w2ZU/OZnVX3/p5X+P+eWPj/n1n4/59Z+P+fWfj/n1j4/6Jd+P/Ikfr/9c/6//vK7v/6vu//+ajp//mk5v/6ouT/+qDh//qf3v/6ntz/+Zza//mb2f30mdWK/6LRCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICA/wKcVfEknFb34p1X+P+eV/j/n1j4/59a+P+fWfj/n1n4/59Z+P+qaPn/5Ln7//vO9v/6r+//+qjr//mm6f/5pOb/+qLj//qg4P/6n97/+p7c//md2t73n98g////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOVeMJmVPxbJ1W+PqeWPj/n1j4/6Ba+P+fWvj/n1r4/6Ba+P+hW/j/voT5//S19f/6rPD/+qru//qo6//5pun/+aPl//qh4//6oOD/+p7e+PSd2mDfn78IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoVX2G5tU99SdV/j/n1j4/6Ba+P+gW/n/oFr5/6Ba+P+fWfj/rmn4/++m9f/6rfL/+qvw//qp7f/6p+r/+aTn//mj5f/6oeP/+aDgzPSf3xgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmWb/BZxT9U2cVvjznlj4/59Z+P+gWvn/oVv5/6Ba+f+fWfj/rWf4/+6l9v/6rvT/+q3x//qr7//6qOz/+abp//ml6P/5o+Tw9KDiRsyZzAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJlN8hSdVve7nVf4/59Z+P+gWvn/oVv5/6Ba+f+fWvj/rWj4/+6m9//6sPb/+q70//qs8v/6qu//+qjr//mm6f72o+Wv8KXhEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKpV/wOdVfY8nlf46p5Y+P+gWvn/oVv6/6Ba+f+fWvj/rWj4/+6o+f/6svj/+rD2//qu9P/6rPH/+qru//mo6+fxpeM2/6qqAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACdTv8Nm1Pzlp5Y+P2gWvn/oVv6/6Fb+v+gWvn/rWj5/+2p+v/5tPn/+bL4//qw9v/6rvT/+qvx/PGo6oT/ougLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgP8CnFfzLJ5X9+GgWvn/oVv6/6Fb+v+gW/r/rWj5/+6r+v/5t/r/+bX5//qz+P/6sPb/+K/12/Gq6iT///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAn0DfCJxU82qeWfn6oVv6/6Fb+v+hW/r/r2r7/+6t+//5uPv/+bf6//m0+f/6svj29K7xW/+q1AYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJVP7R2eVvbPoFr6/6Fb+v+hXPr/r2v6/+6u+//5uPv/+bj7//m3+v/3tPfD9LH0FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL9A/wSeVfZUn1n58qFc+/+hXPr/r2v6/+6u/P/5ufv/+bn7//m5++31uPVL/6r/AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAChUfITnlf2s59a+v+hXPv/r2r7/+6u/P/4uvz/+br8/va596Xvr+8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgP8Cnlb0RJ9Z+OmhXPr/r2v7/+6u/P/5uvz/+Lz84/a99jr/gP8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqlX/DJ9X9ZWgW/n9r2v7/+6u/P/5uvz79bf3hv/G/wkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wD/AZ5X9TKfWfndrmr7/+6v/P/4ufrU8rfyJ/8A/wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKpV/wadWPV6rmn6+e2v+/b1uvhr/7//BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACfWO8gsWv5yuiq+r30tfQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgP8CtnPyUNui9Ef///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4D/AoCA/wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////wAA////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAADAAAAAAAMAAMAAAAAAAwAA4AAAAAAHAADgAAAAAAcAAPAAAAAADwAA8AAAAAAPAAD4AAAAAB8AAPwAAAAAPwAA/AAAAAA/AAD+AAAAAH8AAP4AAAAAfwAA/wAAAAD/AAD/AAAAAP8AAP+AAAAB/wAA/8AAAAP/AAD/wAAAA/8AAP/gAAAH/wAA/+AAAAf/AAD/8AAAD/8AAP/wAAAP/wAA//gAAB//AAD//AAAP/8AAP/8AAA//wAA//4AAH//AAD//gAAf/8AAP//AAD//wAA//8AAP//AAD//4AB//8AAP//wAP//wAA///AA///AAD//+AH//8AAP//4Af//wAA///wD///AAD///AP//8AAP//+B///wAA///8P///AAD///w///8AAP///n///wAA////////AAD///////8AACgAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGYzzAWAAKoGgACqBoAAqgaAAKoGgACqBoAAqgaAAKoGgACqBqoA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`;
6
7
  export class PrismThemeService {
7
8
  theme = signal(this.readStoredTheme(), /* @ts-ignore */
8
9
  ...(ngDevMode ? [{ debugName: "theme" }] : /* istanbul ignore next */ []));
9
10
  isDark = computed(() => this.theme() === 'dark', /* @ts-ignore */
10
11
  ...(ngDevMode ? [{ debugName: "isDark" }] : /* istanbul ignore next */ []));
11
- configOverrides = {};
12
- darkOverrides = {};
13
- lightOverrides = {};
12
+ overrides = signal({}, /* @ts-ignore */
13
+ ...(ngDevMode ? [{ debugName: "overrides" }] : /* istanbul ignore next */ []));
14
+ /** Every token of the active mode, including the user's overrides. */
15
+ appTokens = computed(() => resolveThemeTokens(this.theme(), this.overrides()).tokens, /* @ts-ignore */
16
+ ...(ngDevMode ? [{ debugName: "appTokens" }] : /* istanbul ignore next */ []));
17
+ /**
18
+ * The dark set, for the header: since 22.7 it is a navy brand band in both
19
+ * themes. Bound as an inline style on the header host, so tokens composed
20
+ * from others (tints, status surfaces) are evaluated there again rather than
21
+ * inherited already resolved against the light theme.
22
+ */
23
+ headerTokens = computed(() => resolveThemeTokens('dark', this.overrides()).tokens, /* @ts-ignore */
24
+ ...(ngDevMode ? [{ debugName: "headerTokens" }] : /* istanbul ignore next */ []));
25
+ warnedDeprecations = new Set();
14
26
  constructor() {
15
27
  this.applyFavicon();
16
28
  effect(() => {
@@ -24,25 +36,21 @@ export class PrismThemeService {
24
36
  this.theme.update((t) => (t === 'dark' ? 'light' : 'dark'));
25
37
  }
26
38
  applyConfigOverrides(config) {
27
- this.configOverrides = config.theme ?? {};
28
- this.darkOverrides = config.darkTheme ?? {};
29
- this.lightOverrides = config.lightTheme ?? {};
39
+ this.overrides.set({ theme: config.theme, darkTheme: config.darkTheme, lightTheme: config.lightTheme });
30
40
  this.applyTokens();
31
41
  }
32
42
  applyTokens() {
33
- const isDark = this.isDark();
34
- const base = isDark ? PRISM_DARK_THEME : PRISM_LIGHT_THEME;
35
- const specific = isDark ? this.darkOverrides : this.lightOverrides;
36
- const merged = {
37
- ...PRISM_BASE_TOKENS,
38
- ...base,
39
- ...specific,
40
- ...this.configOverrides
41
- };
43
+ const { tokens, deprecatedOverrides } = resolveThemeTokens(this.theme(), this.overrides());
42
44
  const style = document.documentElement.style;
43
- for (const [key, value] of Object.entries(merged)) {
45
+ for (const [key, value] of Object.entries(tokens)) {
44
46
  style.setProperty(key, value);
45
47
  }
48
+ for (const token of deprecatedOverrides) {
49
+ if (this.warnedDeprecations.has(token))
50
+ continue;
51
+ this.warnedDeprecations.add(token);
52
+ console.warn(`[ng-prism] ${deprecatedTokenNotice(token)}`);
53
+ }
46
54
  }
47
55
  applyFavicon() {
48
56
  let link = document.querySelector('link[rel="icon"]');
@@ -52,7 +60,7 @@ export class PrismThemeService {
52
60
  document.head.appendChild(link);
53
61
  }
54
62
  link.type = 'image/svg+xml';
55
- link.href = FAVICON_DATA_URI;
63
+ link.href = FAVICON_SVG_DATA_URI;
56
64
  }
57
65
  readStoredTheme() {
58
66
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"prism-url-state.service.d.ts","sourceRoot":"","sources":["../../../src/app/services/prism-url-state.service.ts"],"names":[],"mappings":";AAgBA,qBACa,oBAAoB;IAC7B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgC;IAChE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkC;IACpE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgC;IAChE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAE7C,OAAO,CAAC,YAAY,CAAS;IAE7B,IAAI,IAAI,IAAI;IAqBZ,OAAO,CAAC,cAAc;IA2CtB,OAAO,CAAC,UAAU;yCA1ET,oBAAoB;;CA+GhC"}
1
+ {"version":3,"file":"prism-url-state.service.d.ts","sourceRoot":"","sources":["../../../src/app/services/prism-url-state.service.ts"],"names":[],"mappings":";AAoDA,qBACa,oBAAoB;IAC7B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgC;IAChE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkC;IACpE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgC;IAChE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAE7C,OAAO,CAAC,YAAY,CAAS;IAE7B,IAAI,IAAI,IAAI;IAsBZ,OAAO,CAAC,cAAc;IAyEtB,OAAO,CAAC,UAAU;yCAzGT,oBAAoB;;CAiJhC"}
@@ -6,12 +6,48 @@ import { PrismPanelService } from './prism-panel.service.js';
6
6
  import { PrismRendererService } from './prism-renderer.service.js';
7
7
  import * as i0 from "@angular/core";
8
8
  const PARAM_COMPONENT = 'component';
9
+ const PARAM_SERVICE = 'service';
10
+ const PARAM_PIPE = 'pipe';
9
11
  const PARAM_PAGE = 'page';
10
12
  const PARAM_VARIANT = 'variant';
13
+ const PARAM_STATE = 'state';
11
14
  const PARAM_VIEW = 'view';
12
15
  const DEFAULT_VIEW = 'renderer';
13
16
  const PARAM_PANEL = 'panel';
14
17
  const DEFAULT_PANEL = 'controls';
18
+ /** The index a `variant` parameter addresses in a list of `count` variants, `0` for anything that is not one. */
19
+ function parseVariantIndex(param, count) {
20
+ if (param === null)
21
+ return 0;
22
+ const index = parseInt(param, 10);
23
+ return !Number.isNaN(index) && index >= 0 && index < count ? index : 0;
24
+ }
25
+ /** The index a `state` parameter addresses in a list of `count` states, `null` for anything that is not one. */
26
+ function parseStateIndex(param, count) {
27
+ if (param === null || !/^\d+$/.test(param))
28
+ return null;
29
+ const index = Number(param);
30
+ return index < count ? index : null;
31
+ }
32
+ /**
33
+ * What a URL addresses, `null` for nothing. The same precedence as the restore,
34
+ * prefixed per kind so a component, a service and a pipe of one name still differ.
35
+ */
36
+ function navKey(params) {
37
+ const component = params.get(PARAM_COMPONENT);
38
+ const service = params.get(PARAM_SERVICE);
39
+ const pipe = params.get(PARAM_PIPE);
40
+ const page = params.get(PARAM_PAGE);
41
+ if (component !== null)
42
+ return `${PARAM_COMPONENT}:${component}`;
43
+ if (service !== null)
44
+ return `${PARAM_SERVICE}:${service}`;
45
+ if (pipe !== null)
46
+ return `${PARAM_PIPE}:${pipe}`;
47
+ if (page !== null)
48
+ return `${PARAM_PAGE}:${page}`;
49
+ return null;
50
+ }
15
51
  export class PrismUrlStateService {
16
52
  manifestService = inject(PrismManifestService);
17
53
  navigationService = inject(PrismNavigationService);
@@ -27,34 +63,60 @@ export class PrismUrlStateService {
27
63
  effect(() => {
28
64
  const item = this.navigationService.activeItem();
29
65
  const variantIndex = this.rendererService.activeVariantIndex();
66
+ const stateIndex = this.rendererService.activeStateIndex();
30
67
  const viewId = this.panelService.activeViewId();
31
68
  const panelId = this.panelService.activePanelId();
32
69
  if (this.suppressSync)
33
70
  return;
34
- this.writeToUrl(item, variantIndex, viewId, panelId);
71
+ this.writeToUrl(item, variantIndex, stateIndex, viewId, panelId);
35
72
  }, { injector: this.injector });
36
73
  window.addEventListener('popstate', () => this.restoreFromUrl());
37
74
  }
38
75
  restoreFromUrl() {
39
76
  const params = new URLSearchParams(window.location.search);
40
77
  const componentClassName = params.get(PARAM_COMPONENT);
78
+ const serviceClassName = params.get(PARAM_SERVICE);
79
+ const pipeClassName = params.get(PARAM_PIPE);
41
80
  const pageTitle = params.get(PARAM_PAGE);
42
81
  const variantParam = params.get(PARAM_VARIANT);
82
+ const stateParam = params.get(PARAM_STATE);
43
83
  const viewId = params.get(PARAM_VIEW);
44
84
  const panelId = params.get(PARAM_PANEL);
85
+ let stateIndex = null;
45
86
  this.suppressSync = true;
46
87
  try {
47
88
  if (componentClassName) {
48
89
  const comp = this.manifestService.components().find((c) => c.meta.className === componentClassName);
49
90
  if (comp) {
91
+ const previousClassName = this.navigationService.activeComponent()?.meta.className;
50
92
  this.navigationService.select(comp);
51
- if (variantParam !== null) {
52
- const index = parseInt(variantParam, 10);
53
- const maxIndex = (comp.meta.showcaseConfig.variants?.length ?? 1) - 1;
54
- if (!Number.isNaN(index) && index >= 0 && index <= maxIndex) {
55
- this.rendererService.activeVariantIndex.set(index);
56
- }
93
+ // Switching to another component resets the variant and the state
94
+ // once `PrismRendererService` follows the navigation, after this
95
+ // restore. Starting the component here makes it the current one
96
+ // before the indexes below are set, so that reset, and the renderer
97
+ // mounting it, keep them (a popstate between components). Not for
98
+ // the component already on screen: a popstate that addresses it (a
99
+ // hash link inside it fires one) must keep the control overrides.
100
+ if (previousClassName !== comp.meta.className) {
101
+ this.rendererService.resetForComponent(comp);
57
102
  }
103
+ const variantIndex = parseVariantIndex(variantParam, comp.meta.showcaseConfig.variants?.length ?? 1);
104
+ if (variantIndex !== this.rendererService.activeVariantIndex()) {
105
+ this.rendererService.selectVariant(variantIndex);
106
+ }
107
+ stateIndex = parseStateIndex(stateParam, comp.meta.showcaseConfig.states?.length ?? 0);
108
+ }
109
+ }
110
+ else if (serviceClassName) {
111
+ const service = this.manifestService.services().find((s) => s.meta.className === serviceClassName);
112
+ if (service) {
113
+ this.navigationService.selectService(service);
114
+ }
115
+ }
116
+ else if (pipeClassName) {
117
+ const pipe = this.manifestService.pipes().find((p) => p.meta.className === pipeClassName);
118
+ if (pipe) {
119
+ this.navigationService.selectPipe(pipe);
58
120
  }
59
121
  }
60
122
  else if (pageTitle) {
@@ -63,6 +125,7 @@ export class PrismUrlStateService {
63
125
  this.navigationService.selectPage(page);
64
126
  }
65
127
  }
128
+ this.rendererService.selectState(stateIndex);
66
129
  if (viewId) {
67
130
  this.panelService.activeViewId.set(viewId);
68
131
  }
@@ -74,7 +137,7 @@ export class PrismUrlStateService {
74
137
  this.suppressSync = false;
75
138
  }
76
139
  }
77
- writeToUrl(item, variantIndex, viewId, panelId) {
140
+ writeToUrl(item, variantIndex, stateIndex, viewId, panelId) {
78
141
  // Built from scratch, never from the current search string: parameters the
79
142
  // app does not own must not survive a navigation. `?capture=1` relies on
80
143
  // this; the "capture flag" specs pin the guarantee.
@@ -84,6 +147,15 @@ export class PrismUrlStateService {
84
147
  if (variantIndex > 0) {
85
148
  params.set(PARAM_VARIANT, String(variantIndex));
86
149
  }
150
+ if (stateIndex !== null) {
151
+ params.set(PARAM_STATE, String(stateIndex));
152
+ }
153
+ }
154
+ else if (item?.kind === 'service') {
155
+ params.set(PARAM_SERVICE, item.data.meta.className);
156
+ }
157
+ else if (item?.kind === 'pipe') {
158
+ params.set(PARAM_PIPE, item.data.meta.className);
87
159
  }
88
160
  else if (item?.kind === 'page') {
89
161
  params.set(PARAM_PAGE, item.data.title);
@@ -98,10 +170,7 @@ export class PrismUrlStateService {
98
170
  const newUrl = queryString ? `${window.location.pathname}?${queryString}` : window.location.pathname;
99
171
  if (newUrl === window.location.pathname + window.location.search)
100
172
  return;
101
- const currentParams = new URLSearchParams(window.location.search);
102
- const prevNavKey = currentParams.get(PARAM_COMPONENT) ?? currentParams.get(PARAM_PAGE);
103
- const newNavKey = params.get(PARAM_COMPONENT) ?? params.get(PARAM_PAGE);
104
- if (prevNavKey !== newNavKey) {
173
+ if (navKey(new URLSearchParams(window.location.search)) !== navKey(params)) {
105
174
  window.history.pushState(null, '', newUrl);
106
175
  }
107
176
  else {
@@ -0,0 +1,7 @@
1
+ import type { StatusTone } from '../../plugin/status.js';
2
+ /** Colour roles of `prism-badge`. */
3
+ export type BadgeTone = 'neutral' | 'primary' | 'success' | 'warn' | 'danger';
4
+ export type { StatusTone };
5
+ /** The badge tone that shows a status verdict. */
6
+ export declare function toneForStatus(status: StatusTone): BadgeTone;
7
+ //# sourceMappingURL=badge.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.types.d.ts","sourceRoot":"","sources":["../../../src/app/shared/badge.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,qCAAqC;AACrC,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE9E,YAAY,EAAE,UAAU,EAAE,CAAC;AAQ3B,kDAAkD;AAClD,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAE3D"}
@@ -0,0 +1,9 @@
1
+ const STATUS_BADGE_TONE = {
2
+ ok: 'success',
3
+ warn: 'warn',
4
+ danger: 'danger'
5
+ };
6
+ /** The badge tone that shows a status verdict. */
7
+ export function toneForStatus(status) {
8
+ return STATUS_BADGE_TONE[status];
9
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * The ng-prism symbol, the mark without the wordmark, as data.
3
+ *
4
+ * Kept as data rather than an SVG file because two consumers draw it with
5
+ * different gradient ids: the logo component renders one instance per place it
6
+ * appears (header and sidebar footer at the same time), and SVG gradient ids are
7
+ * document-global; the favicon serialises it once into a data URI. The geometry
8
+ * is copied verbatim from `docs/assets/brand/ng-prism-symbol.svg` (2048 × 1608
9
+ * canvas), which `brand-mark.spec.ts` checks, and must not be edited: the brand
10
+ * guide forbids reshaping the mark.
11
+ */
12
+ export interface BrandMarkGradient {
13
+ id: string;
14
+ /** End points on the mark's canvas (`gradientUnits="userSpaceOnUse"`). */
15
+ x1: number;
16
+ y1: number;
17
+ x2: number;
18
+ y2: number;
19
+ stops: ReadonlyArray<readonly [offset: string, colour: string]>;
20
+ }
21
+ export interface BrandMarkFacet {
22
+ d: string;
23
+ /** A gradient id from {@link BRAND_MARK_GRADIENTS}, or a solid colour. */
24
+ gradient?: string;
25
+ colour?: string;
26
+ }
27
+ export declare const BRAND_MARK_GRADIENTS: readonly BrandMarkGradient[];
28
+ export declare const BRAND_MARK_FACETS: readonly BrandMarkFacet[];
29
+ /** The mark's bounding box on the kit canvas, trimmed to the facets. */
30
+ export declare const BRAND_MARK_VIEWBOX = "4 31 2036 1561";
31
+ /** The same box padded to a square, for icons the browser would otherwise letterbox. */
32
+ export declare const BRAND_MARK_SQUARE_VIEWBOX = "4 -206.5 2036 2036";
33
+ /** The mark as a standalone SVG document, with every gradient id prefixed. */
34
+ export declare function brandMarkSvg(idPrefix: string, viewBox: string): string;
35
+ //# sourceMappingURL=brand-mark.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand-mark.d.ts","sourceRoot":"","sources":["../../../src/app/shared/brand-mark.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,0EAA0E;IAC1E,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACnE;AAED,MAAM,WAAW,cAAc;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,oBAAoB,EAAE,SAAS,iBAAiB,EAa5D,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,SAAS,cAAc,EAyBtD,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AAEnD,wFAAwF;AACxF,eAAO,MAAM,yBAAyB,uBAAuB,CAAC;AAE9D,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAUtE"}