@ng-prism/core 22.2.0 → 22.3.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 (292) hide show
  1. package/README.md +22 -24
  2. package/builders.json +11 -11
  3. package/dist/app/canvas/canvas-bg.styles.d.ts +1 -1
  4. package/dist/app/canvas/canvas-bg.styles.d.ts.map +1 -1
  5. package/dist/app/canvas/canvas-bg.styles.js +17 -0
  6. package/dist/app/canvas/prism-canvas-bg-pill.component.d.ts.map +1 -1
  7. package/dist/app/canvas/prism-canvas-bg-pill.component.js +3 -18
  8. package/dist/app/canvas/prism-canvas-rulers.component.d.ts +1 -0
  9. package/dist/app/canvas/prism-canvas-rulers.component.d.ts.map +1 -1
  10. package/dist/app/canvas/prism-canvas-rulers.component.js +9 -14
  11. package/dist/app/canvas/prism-canvas-toolbar.component.d.ts +23 -6
  12. package/dist/app/canvas/prism-canvas-toolbar.component.d.ts.map +1 -1
  13. package/dist/app/canvas/prism-canvas-toolbar.component.js +110 -140
  14. package/dist/app/canvas/prism-template-popover.component.d.ts.map +1 -1
  15. package/dist/app/canvas/prism-template-popover.component.js +8 -49
  16. package/dist/app/canvas/viewport-snap.d.ts +12 -0
  17. package/dist/app/canvas/viewport-snap.d.ts.map +1 -0
  18. package/dist/app/canvas/viewport-snap.js +23 -0
  19. package/dist/app/component-head/head-metrics.d.ts.map +1 -1
  20. package/dist/app/component-head/head-metrics.js +2 -2
  21. package/dist/app/component-head/prism-component-head.component.d.ts +1 -1
  22. package/dist/app/component-head/prism-component-head.component.d.ts.map +1 -1
  23. package/dist/app/component-head/prism-component-head.component.js +17 -50
  24. package/dist/app/component-head/prism-head-gauge.component.d.ts.map +1 -1
  25. package/dist/app/component-head/prism-head-gauge.component.js +4 -36
  26. package/dist/app/component-head/prism-head-info.component.d.ts.map +1 -1
  27. package/dist/app/component-head/prism-head-info.component.js +3 -36
  28. package/dist/app/component-head/prism-stat.component.d.ts.map +1 -1
  29. package/dist/app/component-head/prism-stat.component.js +3 -14
  30. package/dist/app/controls/boolean-control.component.d.ts.map +1 -1
  31. package/dist/app/controls/boolean-control.component.js +4 -12
  32. package/dist/app/controls/json-control.component.d.ts.map +1 -1
  33. package/dist/app/controls/json-control.component.js +4 -24
  34. package/dist/app/controls/number-control.component.d.ts.map +1 -1
  35. package/dist/app/controls/number-control.component.js +4 -11
  36. package/dist/app/controls/string-control.component.d.ts.map +1 -1
  37. package/dist/app/controls/string-control.component.js +4 -11
  38. package/dist/app/controls/union-control.component.d.ts.map +1 -1
  39. package/dist/app/controls/union-control.component.js +4 -16
  40. package/dist/app/directives/prism-resizer.directive.d.ts +24 -1
  41. package/dist/app/directives/prism-resizer.directive.d.ts.map +1 -1
  42. package/dist/app/directives/prism-resizer.directive.js +44 -7
  43. package/dist/app/directives/resize-value.d.ts +22 -0
  44. package/dist/app/directives/resize-value.d.ts.map +1 -0
  45. package/dist/app/directives/resize-value.js +23 -0
  46. package/dist/app/discovery-manifest.d.ts.map +1 -1
  47. package/dist/app/discovery-manifest.js +5 -7
  48. package/dist/app/header/prism-header-widget-host.component.d.ts.map +1 -1
  49. package/dist/app/header/prism-header-widget-host.component.js +4 -8
  50. package/dist/app/header/prism-header.component.d.ts.map +1 -1
  51. package/dist/app/header/prism-header.component.js +8 -77
  52. package/dist/app/hmr.d.ts.map +1 -1
  53. package/dist/app/icons/icon-registry.d.ts.map +1 -1
  54. package/dist/app/icons/icon-registry.js +2 -1
  55. package/dist/app/icons/prism-icon.component.d.ts.map +1 -1
  56. package/dist/app/icons/prism-icon.component.js +5 -5
  57. package/dist/app/index.d.ts +3 -3
  58. package/dist/app/index.d.ts.map +1 -1
  59. package/dist/app/index.js +3 -3
  60. package/dist/app/layout-menu/prism-layout-menu.component.d.ts.map +1 -1
  61. package/dist/app/layout-menu/prism-layout-menu.component.js +3 -77
  62. package/dist/app/overview/overview-panel.js +1 -1
  63. package/dist/app/overview/overview-visibility.d.ts.map +1 -1
  64. package/dist/app/overview/prism-overview-cell.component.d.ts.map +1 -1
  65. package/dist/app/overview/prism-overview-cell.component.js +10 -17
  66. package/dist/app/overview/prism-overview.component.d.ts.map +1 -1
  67. package/dist/app/overview/prism-overview.component.js +4 -12
  68. package/dist/app/page-renderer/prism-page-renderer.component.d.ts.map +1 -1
  69. package/dist/app/page-renderer/prism-page-renderer.component.js +4 -17
  70. package/dist/app/panels/a11y/a11y-audit.service.d.ts.map +1 -1
  71. package/dist/app/panels/a11y/a11y-audit.service.js +14 -2
  72. package/dist/app/panels/a11y/a11y-core.plugin.d.ts.map +1 -1
  73. package/dist/app/panels/a11y/a11y-core.plugin.js +1 -1
  74. package/dist/app/panels/a11y/a11y-dom-utils.d.ts.map +1 -1
  75. package/dist/app/panels/a11y/a11y-dom-utils.js +9 -6
  76. package/dist/app/panels/a11y/a11y-header-badge.component.d.ts.map +1 -1
  77. package/dist/app/panels/a11y/a11y-header-badge.component.js +6 -22
  78. package/dist/app/panels/a11y/a11y-keyboard-overlay.component.d.ts.map +1 -1
  79. package/dist/app/panels/a11y/a11y-keyboard-overlay.component.js +6 -25
  80. package/dist/app/panels/a11y/a11y-keyboard.component.d.ts.map +1 -1
  81. package/dist/app/panels/a11y/a11y-keyboard.component.js +5 -36
  82. package/dist/app/panels/a11y/a11y-keyboard.service.d.ts.map +1 -1
  83. package/dist/app/panels/a11y/a11y-keyboard.service.js +2 -2
  84. package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts.map +1 -1
  85. package/dist/app/panels/a11y/a11y-overlay-host.component.js +5 -32
  86. package/dist/app/panels/a11y/a11y-panel-state.service.d.ts.map +1 -1
  87. package/dist/app/panels/a11y/a11y-panel.component.d.ts +1 -1
  88. package/dist/app/panels/a11y/a11y-panel.component.d.ts.map +1 -1
  89. package/dist/app/panels/a11y/a11y-panel.component.js +7 -69
  90. package/dist/app/panels/a11y/a11y-perspective.service.d.ts.map +1 -1
  91. package/dist/app/panels/a11y/a11y-score.component.d.ts.map +1 -1
  92. package/dist/app/panels/a11y/a11y-score.component.js +4 -31
  93. package/dist/app/panels/a11y/a11y-sr-overlay.component.d.ts.map +1 -1
  94. package/dist/app/panels/a11y/a11y-sr-overlay.component.js +8 -28
  95. package/dist/app/panels/a11y/a11y-sr.component.d.ts.map +1 -1
  96. package/dist/app/panels/a11y/a11y-sr.component.js +5 -28
  97. package/dist/app/panels/a11y/a11y-sr.service.d.ts.map +1 -1
  98. package/dist/app/panels/a11y/a11y-sr.service.js +4 -7
  99. package/dist/app/panels/a11y/a11y-summary.d.ts.map +1 -1
  100. package/dist/app/panels/a11y/a11y-summary.js +2 -5
  101. package/dist/app/panels/a11y/a11y-thresholds.d.ts.map +1 -1
  102. package/dist/app/panels/a11y/a11y-thresholds.js +1 -1
  103. package/dist/app/panels/a11y/a11y-tree.component.d.ts.map +1 -1
  104. package/dist/app/panels/a11y/a11y-tree.component.js +9 -46
  105. package/dist/app/panels/a11y/a11y-tree.service.d.ts.map +1 -1
  106. package/dist/app/panels/a11y/a11y-tree.service.js +3 -5
  107. package/dist/app/panels/a11y/a11y-violations.component.d.ts.map +1 -1
  108. package/dist/app/panels/a11y/a11y-violations.component.js +7 -58
  109. package/dist/app/panels/a11y/a11y.types.d.ts.map +1 -1
  110. package/dist/app/panels/builtin-header-widgets.js +2 -2
  111. package/dist/app/panels/builtin-navigation-decorations.d.ts.map +1 -1
  112. package/dist/app/panels/builtin-navigation-decorations.js +2 -2
  113. package/dist/app/panels/builtin-panels.d.ts.map +1 -1
  114. package/dist/app/panels/builtin-panels.js +2 -7
  115. package/dist/app/panels/controls/controls-plugin.js +3 -3
  116. package/dist/app/panels/controls/non-editable-input-types.d.ts.map +1 -1
  117. package/dist/app/panels/controls/non-editable-input-types.js +1 -5
  118. package/dist/app/panels/controls/prism-controls-panel.component.d.ts.map +1 -1
  119. package/dist/app/panels/controls/prism-controls-panel.component.js +5 -95
  120. package/dist/app/panels/events/events-plugin.js +3 -3
  121. package/dist/app/panels/events/prism-events-panel.component.d.ts.map +1 -1
  122. package/dist/app/panels/events/prism-events-panel.component.js +5 -23
  123. package/dist/app/panels/events/prism-json-node.component.d.ts.map +1 -1
  124. package/dist/app/panels/events/prism-json-node.component.js +4 -86
  125. package/dist/app/panels/events/prism-json-node.utils.d.ts.map +1 -1
  126. package/dist/app/panels/panel-host/panel-badge.d.ts.map +1 -1
  127. package/dist/app/panels/panel-host/panel-badge.js +2 -4
  128. package/dist/app/panels/panel-host/prism-panel-host.component.d.ts +1 -1
  129. package/dist/app/panels/panel-host/prism-panel-host.component.d.ts.map +1 -1
  130. package/dist/app/panels/panel-host/prism-panel-host.component.js +12 -67
  131. package/dist/app/provide-prism.d.ts +1 -1
  132. package/dist/app/provide-prism.d.ts.map +1 -1
  133. package/dist/app/provide-prism.js +7 -11
  134. package/dist/app/renderer/known-inputs.d.ts.map +1 -1
  135. package/dist/app/renderer/overlay-resolver.d.ts.map +1 -1
  136. package/dist/app/renderer/overlay-resolver.js +1 -1
  137. package/dist/app/renderer/prism-renderer.component.d.ts +27 -2
  138. package/dist/app/renderer/prism-renderer.component.d.ts.map +1 -1
  139. package/dist/app/renderer/prism-renderer.component.js +94 -76
  140. package/dist/app/renderer/projectable-content.d.ts.map +1 -1
  141. package/dist/app/renderer/projectable-content.js +1 -3
  142. package/dist/app/renderer/snippet-generator.d.ts +1 -1
  143. package/dist/app/renderer/snippet-generator.d.ts.map +1 -1
  144. package/dist/app/renderer/snippet-generator.js +7 -22
  145. package/dist/app/services/navigation-item.types.d.ts +1 -1
  146. package/dist/app/services/navigation-item.types.d.ts.map +1 -1
  147. package/dist/app/services/prism-canvas.service.d.ts +22 -0
  148. package/dist/app/services/prism-canvas.service.d.ts.map +1 -1
  149. package/dist/app/services/prism-canvas.service.js +49 -2
  150. package/dist/app/services/prism-capture.service.d.ts.map +1 -1
  151. package/dist/app/services/prism-capture.service.js +2 -6
  152. package/dist/app/services/prism-event-log.service.d.ts.map +1 -1
  153. package/dist/app/services/prism-event-log.service.js +1 -4
  154. package/dist/app/services/prism-layout.service.d.ts.map +1 -1
  155. package/dist/app/services/prism-layout.service.js +5 -4
  156. package/dist/app/services/prism-manifest.service.d.ts +1 -1
  157. package/dist/app/services/prism-manifest.service.d.ts.map +1 -1
  158. package/dist/app/services/prism-manifest.service.js +1 -1
  159. package/dist/app/services/prism-navigation.service.d.ts +1 -1
  160. package/dist/app/services/prism-navigation.service.d.ts.map +1 -1
  161. package/dist/app/services/prism-navigation.service.js +5 -13
  162. package/dist/app/services/prism-panel.service.d.ts.map +1 -1
  163. package/dist/app/services/prism-panel.service.js +2 -5
  164. package/dist/app/services/prism-persistence.service.d.ts.map +1 -1
  165. package/dist/app/services/prism-persistence.service.js +8 -10
  166. package/dist/app/services/prism-plugin.service.d.ts.map +1 -1
  167. package/dist/app/services/prism-renderer.service.d.ts.map +1 -1
  168. package/dist/app/services/prism-renderer.service.js +5 -9
  169. package/dist/app/services/prism-search.service.d.ts.map +1 -1
  170. package/dist/app/services/prism-search.service.js +1 -2
  171. package/dist/app/services/prism-theme.service.d.ts.map +1 -1
  172. package/dist/app/services/prism-theme.service.js +6 -4
  173. package/dist/app/services/prism-url-state.service.d.ts.map +1 -1
  174. package/dist/app/services/prism-url-state.service.js +3 -9
  175. package/dist/app/services/prism-variant-bg.service.d.ts.map +1 -1
  176. package/dist/app/services/prism-variant-bg.service.js +3 -5
  177. package/dist/app/shared/prism-metric-badge.component.d.ts.map +1 -1
  178. package/dist/app/shared/prism-metric-badge.component.js +4 -17
  179. package/dist/app/shell/prism-shell.component.d.ts.map +1 -1
  180. package/dist/app/shell/prism-shell.component.js +20 -122
  181. package/dist/app/sidebar/navigation-decorations.d.ts.map +1 -1
  182. package/dist/app/sidebar/navigation-decorations.js +1 -1
  183. package/dist/app/sidebar/prism-sidebar.component.d.ts +1 -1
  184. package/dist/app/sidebar/prism-sidebar.component.d.ts.map +1 -1
  185. package/dist/app/sidebar/prism-sidebar.component.js +19 -154
  186. package/dist/app/theme/prism-default-theme.d.ts.map +1 -1
  187. package/dist/app/theme/prism-default-theme.js +5 -5
  188. package/dist/app/tokens/prism-tokens.d.ts.map +1 -1
  189. package/dist/app/tokens/prism-tokens.js +1 -1
  190. package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts.map +1 -1
  191. package/dist/app/variant-ribbon/prism-variant-ribbon.component.js +4 -49
  192. package/dist/app/variant-ribbon/spectrum.d.ts.map +1 -1
  193. package/dist/app/view-tab-bar/next-view-id.d.ts.map +1 -1
  194. package/dist/app/view-tab-bar/next-view-id.js +1 -3
  195. package/dist/app/view-tab-bar/prism-view-panel-host.component.d.ts.map +1 -1
  196. package/dist/app/view-tab-bar/prism-view-panel-host.component.js +5 -17
  197. package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts.map +1 -1
  198. package/dist/app/view-tab-bar/prism-view-tab-bar.component.js +4 -27
  199. package/dist/builder/a11y/a11y-report-reader.d.ts +1 -1
  200. package/dist/builder/a11y/a11y-report-reader.d.ts.map +1 -1
  201. package/dist/builder/a11y/a11y-report-reader.js +7 -7
  202. package/dist/builder/build/index.d.ts.map +1 -1
  203. package/dist/builder/build/index.js +5 -9
  204. package/dist/builder/build/schema.d.ts.map +1 -1
  205. package/dist/builder/config-loader/config-loader.d.ts.map +1 -1
  206. package/dist/builder/config-loader/config-loader.js +4 -5
  207. package/dist/builder/manifest/host-parser.d.ts.map +1 -1
  208. package/dist/builder/manifest/host-parser.js +1 -1
  209. package/dist/builder/manifest/runtime-manifest.generator.d.ts +1 -1
  210. package/dist/builder/manifest/runtime-manifest.generator.d.ts.map +1 -1
  211. package/dist/builder/manifest/runtime-manifest.generator.js +9 -34
  212. package/dist/builder/plugin-runner/plugin-runner.d.ts.map +1 -1
  213. package/dist/builder/plugin-runner/plugin-runner.js +1 -3
  214. package/dist/builder/scanner/ast-utils.d.ts.map +1 -1
  215. package/dist/builder/scanner/ast-utils.js +2 -8
  216. package/dist/builder/scanner/component.scanner.d.ts.map +1 -1
  217. package/dist/builder/scanner/component.scanner.js +15 -22
  218. package/dist/builder/scanner/entry-point-discovery.d.ts.map +1 -1
  219. package/dist/builder/scanner/entry-point-discovery.js +3 -5
  220. package/dist/builder/scanner/entry-point.scanner.d.ts.map +1 -1
  221. package/dist/builder/scanner/entry-point.scanner.js +1 -3
  222. package/dist/builder/scanner/index.d.ts +1 -1
  223. package/dist/builder/scanner/index.d.ts.map +1 -1
  224. package/dist/builder/scanner/input.extractor.d.ts.map +1 -1
  225. package/dist/builder/scanner/input.extractor.js +11 -28
  226. package/dist/builder/scanner/manifest.generator.d.ts.map +1 -1
  227. package/dist/builder/scanner/manifest.generator.js +2 -4
  228. package/dist/builder/scanner/scanner.d.ts.map +1 -1
  229. package/dist/builder/scanner/scanner.js +4 -4
  230. package/dist/builder/serve/index.d.ts.map +1 -1
  231. package/dist/builder/serve/index.js +8 -10
  232. package/dist/builder/serve/schema.d.ts.map +1 -1
  233. package/dist/builder/shared/index.d.ts +1 -1
  234. package/dist/builder/shared/index.d.ts.map +1 -1
  235. package/dist/builder/shared/index.js +1 -1
  236. package/dist/builder/shared/prism-pipeline.d.ts.map +1 -1
  237. package/dist/builder/shared/prism-pipeline.js +18 -25
  238. package/dist/builder/shared/resolve-cache-dir.d.ts.map +1 -1
  239. package/dist/builder/shared/resolve-cache-dir.js +1 -1
  240. package/dist/builder/watcher/index.d.ts +1 -1
  241. package/dist/builder/watcher/index.d.ts.map +1 -1
  242. package/dist/builder/watcher/prism-watcher.d.ts.map +1 -1
  243. package/dist/builder/watcher/prism-watcher.js +12 -10
  244. package/dist/config/index.d.ts +2 -2
  245. package/dist/config/index.d.ts.map +1 -1
  246. package/dist/config/index.js +1 -1
  247. package/dist/decorator/index.d.ts +1 -1
  248. package/dist/decorator/index.d.ts.map +1 -1
  249. package/dist/decorator/showcase.decorator.d.ts.map +1 -1
  250. package/dist/decorator/showcase.types.d.ts.map +1 -1
  251. package/dist/plugin/index.d.ts +4 -4
  252. package/dist/plugin/index.d.ts.map +1 -1
  253. package/dist/plugin/index.js +2 -2
  254. package/dist/plugin/page-helpers.d.ts +1 -1
  255. package/dist/plugin/page-helpers.d.ts.map +1 -1
  256. package/dist/plugin/page-helpers.js +2 -2
  257. package/dist/plugin/page.types.d.ts.map +1 -1
  258. package/dist/plugin/plugin.types.d.ts +1 -1
  259. package/dist/plugin/plugin.types.d.ts.map +1 -1
  260. package/dist/schematics/migrations/v21-13-manifest-cache/index.d.ts.map +1 -1
  261. package/dist/schematics/migrations/v21-13-manifest-cache/index.js +4 -10
  262. package/dist/schematics/migrations/v22-0-cache-dir-rename/index.d.ts.map +1 -1
  263. package/dist/schematics/migrations/v22-0-cache-dir-rename/index.js +4 -8
  264. package/dist/schematics/ng-add/index.d.ts.map +1 -1
  265. package/dist/schematics/ng-add/index.js +122 -56
  266. package/dist/schematics/ng-add/schema.d.ts.map +1 -1
  267. package/dist/schematics/utils/config-ast.d.ts.map +1 -1
  268. package/dist/schematics/utils/config-ast.js +8 -15
  269. package/dist/schematics/utils/tsconfig-paths.d.ts.map +1 -1
  270. package/dist/schematics/utils/tsconfig-paths.js +1 -1
  271. package/dist/shared/canvas-bg.type.d.ts.map +1 -1
  272. package/dist/shared/canvas-bg.type.js +1 -8
  273. package/dist/shared/canvas-layout.type.d.ts.map +1 -1
  274. package/dist/shared/canvas-layout.type.js +1 -4
  275. package/dist/shared/variant-bg.d.ts.map +1 -1
  276. package/dist/shared/viewport.type.d.ts +47 -0
  277. package/dist/shared/viewport.type.d.ts.map +1 -0
  278. package/dist/shared/viewport.type.js +48 -0
  279. package/dist/transformer/cli.js +0 -0
  280. package/dist/transformer/index.d.ts +2 -2
  281. package/dist/transformer/index.d.ts.map +1 -1
  282. package/dist/transformer/index.js +2 -2
  283. package/dist/transformer/showcase-strip.transformer.d.ts.map +1 -1
  284. package/dist/transformer/showcase-strip.transformer.js +6 -15
  285. package/dist/transformer/strip-directory.d.ts.map +1 -1
  286. package/dist/transformer/strip-directory.js +2 -4
  287. package/package.json +4 -1
  288. package/schematics/collection.json +7 -7
  289. package/schematics/migrations.json +12 -12
  290. package/schematics/ng-add/schema.json +22 -22
  291. package/src/builder/build/schema.json +36 -36
  292. package/src/builder/serve/schema.json +37 -37
@@ -1 +1 @@
1
- {"version":3,"file":"a11y-tree.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-tree.component.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;;AAEhD,qBAyEa,qBAAqB;IAChC,QAAQ,CAAC,IAAI,gDAA8B;IAC3C,QAAQ,CAAC,KAAK,8CAAY;IAC1B,QAAQ,CAAC,MAAM,+CAAgB;IAE/B,SAAS,CAAC,QAAQ,CAAC,QAAQ,kDAAgB;IAC3C,OAAO,CAAC,WAAW,CAAwB;;IAc3C,SAAS,CAAC,QAAQ,CAAC,YAAY;;;SAQ5B;IAEH,SAAS,CAAC,cAAc,IAAI,IAAI;yCA9BrB,qBAAqB;2CAArB,qBAAqB;CAmCjC;AAED,qBA6Ba,iBAAiB;IAC5B,SAAS,CAAC,QAAQ,CAAC,eAAe,uBAAgC;IAClE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;IAEvD,SAAS,CAAC,QAAQ,CAAC,IAAI,kDAQpB;yCAZQ,iBAAiB;2CAAjB,iBAAiB;CAa7B"}
1
+ {"version":3,"file":"a11y-tree.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-tree.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAEhF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;;AAEhD,qBAOa,qBAAqB;IAC9B,QAAQ,CAAC,IAAI,gDAA8B;IAC3C,QAAQ,CAAC,KAAK,8CAAY;IAC1B,QAAQ,CAAC,MAAM,+CAAgB;IAE/B,SAAS,CAAC,QAAQ,CAAC,QAAQ,kDAAgB;IAC3C,OAAO,CAAC,WAAW,CAAwB;;IAe3C,SAAS,CAAC,QAAQ,CAAC,YAAY;;;SAS5B;IAEH,SAAS,CAAC,cAAc,IAAI,IAAI;yCAhCvB,qBAAqB;2CAArB,qBAAqB;CAqCjC;AAED,qBAQa,iBAAiB;IAC1B,SAAS,CAAC,QAAQ,CAAC,eAAe,uBAAgC;IAClE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;IAEvD,SAAS,CAAC,QAAQ,CAAC,IAAI,kDAOpB;yCAXM,iBAAiB;2CAAjB,iBAAiB;CAY7B"}
@@ -1,6 +1,6 @@
1
- import { ChangeDetectionStrategy, Component, computed, effect, inject, input, signal, untracked, } from '@angular/core';
2
- import { A11yTreeService } from './a11y-tree.service.js';
1
+ import { ChangeDetectionStrategy, Component, computed, effect, inject, input, signal, untracked } from '@angular/core';
3
2
  import { PrismRendererService } from '../../services/prism-renderer.service.js';
3
+ import { A11yTreeService } from './a11y-tree.service.js';
4
4
  import * as i0 from "@angular/core";
5
5
  const _forTrack0 = ($index, $item) => $item.key;
6
6
  const _forTrack1 = ($index, $item) => $item.element;
@@ -95,7 +95,7 @@ export class A11yTreeNodeComponent {
95
95
  .filter(([key]) => key !== 'hidden')
96
96
  .map(([key, value]) => ({
97
97
  key,
98
- label: value === true ? key : `${key}=${value}`,
98
+ label: value === true ? key : `${key}=${value}`
99
99
  }));
100
100
  }, /* @ts-ignore */
101
101
  ...(ngDevMode ? [{ debugName: "stateEntries" }] : /* istanbul ignore next */ []));
@@ -133,40 +133,13 @@ export class A11yTreeNodeComponent {
133
133
  i0.ɵɵrepeater(ctx.stateEntries());
134
134
  i0.ɵɵadvance(2);
135
135
  i0.ɵɵconditional(ctx.expanded() && ctx.node().children.length ? 9 : -1);
136
- } }, dependencies: [A11yTreeNodeComponent], styles: ["[_nghost-%COMP%] { display: block; }\n\n .aria-tree-line[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 2px 0;\n font-family: var(--%NS%font-mono);\n font-size: 12.5px;\n line-height: 1.8;\n color: var(--%NS%prism-text-2);\n }\n .aria-tree-line--hidden[_ngcontent-%COMP%] { opacity: 0.4; }\n\n .indent[_ngcontent-%COMP%] {\n color: var(--%NS%prism-text-ghost);\n opacity: 0.5;\n user-select: none;\n flex-shrink: 0;\n white-space: pre;\n font-size: 12px;\n text-align: right;\n }\n\n .tree-toggle[_ngcontent-%COMP%] {\n background: none;\n border: none;\n cursor: pointer;\n font-size: 10px;\n color: var(--%NS%prism-text-muted);\n padding: 0;\n width: 12px;\n flex-shrink: 0;\n }\n\n .role[_ngcontent-%COMP%] { color: var(--%NS%prism-primary); font-weight: 600; }\n .name[_ngcontent-%COMP%] { color: var(--%NS%prism-text); }\n .attr[_ngcontent-%COMP%] { color: var(--%NS%prism-text-ghost); }"] });
136
+ } }, dependencies: [A11yTreeNodeComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n}\n\n.aria-tree-line[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n padding: 2px 0;\n font-family: var(--%NS%font-mono);\n font-size: 12.5px;\n line-height: 1.8;\n color: var(--%NS%prism-text-2);\n}\n\n.aria-tree-line--hidden[_ngcontent-%COMP%] {\n opacity: 0.4;\n}\n\n.indent[_ngcontent-%COMP%] {\n flex-shrink: 0;\n font-size: 12px;\n color: var(--%NS%prism-text-ghost);\n text-align: right;\n white-space: pre;\n user-select: none;\n opacity: 0.5;\n}\n\n.tree-toggle[_ngcontent-%COMP%] {\n flex-shrink: 0;\n width: 12px;\n padding: 0;\n font-size: 10px;\n color: var(--%NS%prism-text-muted);\n cursor: pointer;\n background: none;\n border: none;\n}\n\n.role[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--%NS%prism-primary);\n}\n\n.name[_ngcontent-%COMP%] {\n color: var(--%NS%prism-text);\n}\n\n.attr[_ngcontent-%COMP%] {\n color: var(--%NS%prism-text-ghost);\n}"] });
137
137
  }
138
138
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(A11yTreeNodeComponent, [{
139
139
  type: Component,
140
- args: [{ selector: 'prism-a11y-tree-node', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
141
- <div class="aria-tree-line" [class.aria-tree-line--hidden]="node().hidden">
142
- <span class="indent" [style.width.px]="depth() * 20">
143
- @if (depth() > 0) {
144
- {{ isLast() ? '└─' : '├─' }}
145
- }
146
- </span>
147
- @if (node().children.length) {
148
- <button class="tree-toggle" (click)="toggleExpanded()">
149
- {{ expanded() ? '▾' : '▸' }}
150
- </button>
151
- }
152
- <span class="role">{{ node().role }}</span>
153
- @if (node().name) {
154
- <span class="name">"{{ node().name }}"</span>
155
- } @for (entry of stateEntries(); track entry.key) {
156
- <span class="attr">[{{ entry.label }}]</span>
157
- }
158
- </div>
159
- @if (expanded() && node().children.length) { @for (child of node().children;
160
- track child.element; let last = $last) {
161
- <prism-a11y-tree-node
162
- [node]="child"
163
- [depth]="depth() + 1"
164
- [isLast]="last"
165
- />
166
- } }
167
- `, styles: ["\n :host { display: block; }\n\n .aria-tree-line {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 2px 0;\n font-family: var(--font-mono);\n font-size: 12.5px;\n line-height: 1.8;\n color: var(--prism-text-2);\n }\n .aria-tree-line--hidden { opacity: 0.4; }\n\n .indent {\n color: var(--prism-text-ghost);\n opacity: 0.5;\n user-select: none;\n flex-shrink: 0;\n white-space: pre;\n font-size: 12px;\n text-align: right;\n }\n\n .tree-toggle {\n background: none;\n border: none;\n cursor: pointer;\n font-size: 10px;\n color: var(--prism-text-muted);\n padding: 0;\n width: 12px;\n flex-shrink: 0;\n }\n\n .role { color: var(--prism-primary); font-weight: 600; }\n .name { color: var(--prism-text); }\n .attr { color: var(--prism-text-ghost); }\n "] }]
140
+ args: [{ selector: 'prism-a11y-tree-node', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"aria-tree-line\"\n [class.aria-tree-line--hidden]=\"node().hidden\">\n <span\n class=\"indent\"\n [style.width.px]=\"depth() * 20\">\n @if (depth() > 0) {\n {{ isLast() ? '\u2514\u2500' : '\u251C\u2500' }}\n }\n </span>\n @if (node().children.length) {\n <button\n class=\"tree-toggle\"\n (click)=\"toggleExpanded()\">\n {{ expanded() ? '\u25BE' : '\u25B8' }}\n </button>\n }\n <span class=\"role\">{{ node().role }}</span>\n @if (node().name) {\n <span class=\"name\">\"{{ node().name }}\"</span>\n }\n @for (entry of stateEntries(); track entry.key) {\n <span class=\"attr\">[{{ entry.label }}]</span>\n }\n</div>\n@if (expanded() && node().children.length) {\n @for (child of node().children; track child.element; let last = $last) {\n <prism-a11y-tree-node\n [node]=\"child\"\n [depth]=\"depth() + 1\"\n [isLast]=\"last\" />\n }\n}\n", styles: [":host {\n display: block;\n}\n\n.aria-tree-line {\n display: flex;\n gap: 8px;\n align-items: center;\n padding: 2px 0;\n font-family: var(--font-mono);\n font-size: 12.5px;\n line-height: 1.8;\n color: var(--prism-text-2);\n}\n\n.aria-tree-line--hidden {\n opacity: 0.4;\n}\n\n.indent {\n flex-shrink: 0;\n font-size: 12px;\n color: var(--prism-text-ghost);\n text-align: right;\n white-space: pre;\n user-select: none;\n opacity: 0.5;\n}\n\n.tree-toggle {\n flex-shrink: 0;\n width: 12px;\n padding: 0;\n font-size: 10px;\n color: var(--prism-text-muted);\n cursor: pointer;\n background: none;\n border: none;\n}\n\n.role {\n font-weight: 600;\n color: var(--prism-primary);\n}\n\n.name {\n color: var(--prism-text);\n}\n\n.attr {\n color: var(--prism-text-ghost);\n}\n"] }]
168
141
  }], () => [], { node: [{ type: i0.Input, args: [{ isSignal: true, alias: "node", required: true }] }], depth: [{ type: i0.Input, args: [{ isSignal: true, alias: "depth", required: false }] }], isLast: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLast", required: false }] }] }); })();
169
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yTreeNodeComponent, { className: "A11yTreeNodeComponent", filePath: "app/panels/a11y/a11y-tree.component.ts", lineNumber: 88 }); })();
142
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yTreeNodeComponent, { className: "A11yTreeNodeComponent", filePath: "app/panels/a11y/a11y-tree.component.ts", lineNumber: 13 }); })();
170
143
  export class A11yTreeComponent {
171
144
  rendererService = inject(PrismRendererService);
172
145
  treeService = inject(A11yTreeService);
@@ -183,20 +156,10 @@ export class A11yTreeComponent {
183
156
  i0.ɵɵconditionalCreate(0, A11yTreeComponent_Conditional_0_Template, 2, 0, "div", 0)(1, A11yTreeComponent_Conditional_1_Template, 2, 3, "div", 1);
184
157
  } if (rf & 2) {
185
158
  i0.ɵɵconditional(!ctx.rendererService.renderedElement() ? 0 : ctx.tree() ? 1 : -1);
186
- } }, dependencies: [A11yTreeNodeComponent], styles: ["[_nghost-%COMP%] { display: block; height: 100%; overflow: auto; }\n\n .aria-tree[_ngcontent-%COMP%] {\n padding: 14px 20px;\n }\n\n .tree-empty[_ngcontent-%COMP%] {\n display: flex; align-items: center; justify-content: center;\n min-height: 100px; color: var(--%NS%prism-text-muted); font-size: 13px;\n }"] });
159
+ } }, dependencies: [A11yTreeNodeComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n height: 100%;\n overflow: auto;\n}\n\n.aria-tree[_ngcontent-%COMP%] {\n padding: 14px 20px;\n}\n\n.tree-empty[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n font-size: 13px;\n color: var(--%NS%prism-text-muted);\n}"] });
187
160
  }
188
161
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(A11yTreeComponent, [{
189
162
  type: Component,
190
- args: [{ selector: 'prism-a11y-tree', standalone: true, imports: [A11yTreeNodeComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `
191
- @if (!rendererService.renderedElement()) {
192
- <div class="tree-empty">
193
- Select a component to inspect the accessibility tree.
194
- </div>
195
- } @else if (tree()) {
196
- <div class="aria-tree">
197
- <prism-a11y-tree-node [node]="tree()!" [depth]="0" [isLast]="true" />
198
- </div>
199
- }
200
- `, styles: ["\n :host { display: block; height: 100%; overflow: auto; }\n\n .aria-tree {\n padding: 14px 20px;\n }\n\n .tree-empty {\n display: flex; align-items: center; justify-content: center;\n min-height: 100px; color: var(--prism-text-muted); font-size: 13px;\n }\n "] }]
163
+ args: [{ selector: 'prism-a11y-tree', standalone: true, imports: [A11yTreeNodeComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!rendererService.renderedElement()) {\n <div class=\"tree-empty\"> Select a component to inspect the accessibility tree. </div>\n} @else if (tree()) {\n <div class=\"aria-tree\">\n <prism-a11y-tree-node\n [node]=\"tree()!\"\n [depth]=\"0\"\n [isLast]=\"true\" />\n </div>\n}\n", styles: [":host {\n display: block;\n height: 100%;\n overflow: auto;\n}\n\n.aria-tree {\n padding: 14px 20px;\n}\n\n.tree-empty {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n font-size: 13px;\n color: var(--prism-text-muted);\n}\n"] }]
201
164
  }], null, null); })();
202
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yTreeComponent, { className: "A11yTreeComponent", filePath: "app/panels/a11y/a11y-tree.component.ts", lineNumber: 154 }); })();
165
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yTreeComponent, { className: "A11yTreeComponent", filePath: "app/panels/a11y/a11y-tree.component.ts", lineNumber: 60 }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"a11y-tree.service.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-tree.service.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;;AAQhD,qBACa,eAAe;IAC1B,SAAS,CACP,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,GACvC,QAAQ;yCAJA,eAAe;;CAO3B"}
1
+ {"version":3,"file":"a11y-tree.service.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-tree.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;;AAMhD,qBACa,eAAe;IACxB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,GAAG,QAAQ;yCADnE,eAAe;;CAI3B"}
@@ -1,10 +1,8 @@
1
1
  import { Injectable } from '@angular/core';
2
- import { computeAccessibleName, extractStates, getRole, isHidden, } from './a11y-dom-utils.js';
2
+ import { computeAccessibleName, extractStates, getRole, isHidden } from './a11y-dom-utils.js';
3
3
  import * as i0 from "@angular/core";
4
4
  const PRESENTATIONAL_ROLES = new Set(['none', 'presentation']);
5
- const STRUCTURAL_TAGS = new Set([
6
- 'SCRIPT', 'STYLE', 'NOSCRIPT', 'META', 'LINK', 'TITLE', 'HEAD',
7
- ]);
5
+ const STRUCTURAL_TAGS = new Set(['SCRIPT', 'STYLE', 'NOSCRIPT', 'META', 'LINK', 'TITLE', 'HEAD']);
8
6
  export class A11yTreeService {
9
7
  buildTree(root, getById) {
10
8
  return buildNode(root, getById);
@@ -42,6 +40,6 @@ function buildNode(element, getById) {
42
40
  states,
43
41
  children,
44
42
  hidden,
45
- element,
43
+ element
46
44
  };
47
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"a11y-violations.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-violations.component.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;;AAqB3D,qBA0Ka,uBAAuB;IAClC,SAAS,CAAC,QAAQ,CAAC,YAAY,mBAA4B;IAE3D,SAAS,CAAC,QAAQ,CAAC,WAAW,mFAE5B;IAEF,SAAS,CAAC,QAAQ,CAAC,UAAU,8DAU1B;IAEH,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM;yCAnBlD,uBAAuB;2CAAvB,uBAAuB;CAsBnC"}
1
+ {"version":3,"file":"a11y-violations.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-violations.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;;AAqB3D,qBAQa,uBAAuB;IAChC,SAAS,CAAC,QAAQ,CAAC,YAAY,mBAA4B;IAE3D,SAAS,CAAC,QAAQ,CAAC,WAAW,mFAAmD;IAEjF,SAAS,CAAC,QAAQ,CAAC,UAAU,8DAQ1B;IAEH,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM;yCAfpD,uBAAuB;2CAAvB,uBAAuB;CAkBnC"}
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, Component, computed, inject, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';
2
2
  import { A11yAuditService } from './a11y-audit.service.js';
3
3
  import { A11yScoreComponent } from './a11y-score.component.js';
4
4
  import * as i0 from "@angular/core";
@@ -116,13 +116,13 @@ const IMPACT_ORDER = {
116
116
  critical: 0,
117
117
  serious: 1,
118
118
  moderate: 2,
119
- minor: 3,
119
+ minor: 3
120
120
  };
121
121
  const IMPACT_COLOR = {
122
122
  critical: 'var(--prism-danger)',
123
123
  serious: '#fb923c',
124
124
  moderate: 'var(--prism-warn)',
125
- minor: 'var(--prism-text-muted)',
125
+ minor: 'var(--prism-text-muted)'
126
126
  };
127
127
  function sevColor(impact) {
128
128
  return IMPACT_COLOR[impact ?? ''] ?? 'var(--prism-success)';
@@ -135,8 +135,7 @@ export class A11yViolationsComponent {
135
135
  const results = this.auditService.results();
136
136
  if (!results)
137
137
  return [];
138
- const violations = [...results.violations].sort((a, b) => (IMPACT_ORDER[a.impact ?? ''] ?? 4) -
139
- (IMPACT_ORDER[b.impact ?? ''] ?? 4));
138
+ const violations = [...results.violations].sort((a, b) => (IMPACT_ORDER[a.impact ?? ''] ?? 4) - (IMPACT_ORDER[b.impact ?? ''] ?? 4));
140
139
  const passes = results.passes.slice(0, 4);
141
140
  return [...violations, ...passes];
142
141
  }, /* @ts-ignore */
@@ -149,60 +148,10 @@ export class A11yViolationsComponent {
149
148
  i0.ɵɵconditionalCreate(0, A11yViolationsComponent_Conditional_0_Template, 2, 1, "div", 0)(1, A11yViolationsComponent_Conditional_1_Template, 15, 7, "div", 1)(2, A11yViolationsComponent_Conditional_2_Template, 2, 0, "div", 2);
150
149
  } if (rf & 2) {
151
150
  i0.ɵɵconditional(ctx.auditService.error() ? 0 : ctx.auditService.results() || ctx.auditService.running() ? 1 : 2);
152
- } }, dependencies: [A11yScoreComponent], styles: ["[_nghost-%COMP%] { display: flex; flex-direction: column; height: 100%; overflow: auto; }\n\n .a11y-body[_ngcontent-%COMP%] {\n padding: 18px 20px;\n display: grid;\n grid-template-columns: 220px 1fr;\n gap: 20px;\n min-height: 0;\n }\n .a11y-body--loading[_ngcontent-%COMP%] { opacity: 0.55; transition: opacity var(--%NS%dur-base); }\n\n .score-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 10px;\n padding: 14px;\n background: var(--%NS%prism-bg-surface);\n border: 1px solid var(--%NS%prism-border);\n border-radius: 10px;\n align-self: start;\n }\n\n .score-label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--%NS%prism-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.08em;\n font-weight: 600;\n }\n .score-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n margin-top: 2px;\n font-size: 11px;\n color: var(--%NS%prism-text-muted);\n }\n .score-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 4px; }\n .score-meta[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { width: 6px; height: 6px; border-radius: 50%; display: block; }\n\n .viol-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n min-width: 0;\n }\n\n .viol[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto 1fr auto;\n align-items: center;\n gap: 12px;\n padding: 10px 12px;\n background: var(--%NS%prism-bg-surface);\n border: 1px solid var(--%NS%prism-border);\n border-radius: 8px;\n border-left: 3px solid var(--%NS%sev-color, var(--%NS%prism-primary));\n transition: border-color var(--%NS%dur-fast);\n }\n .viol[_ngcontent-%COMP%]:hover { border-color: var(--%NS%prism-border-strong); }\n\n .viol-sev[_ngcontent-%COMP%] {\n font-family: var(--%NS%font-mono);\n font-size: 9.5px;\n font-weight: 700;\n padding: 2px 6px;\n border-radius: var(--%NS%radius-xs);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n background: color-mix(in srgb, var(--%NS%sev-color) 15%, transparent);\n color: var(--%NS%sev-color);\n }\n\n .viol-text[_ngcontent-%COMP%] {\n font-size: 12.5px;\n color: var(--%NS%prism-text);\n min-width: 0;\n }\n .viol-text[_ngcontent-%COMP%] b[_ngcontent-%COMP%] {\n display: block;\n font-weight: 600;\n margin-bottom: 1px;\n }\n .viol-text[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n color: var(--%NS%prism-text-muted);\n font-size: 11.5px;\n }\n\n .viol-rule[_ngcontent-%COMP%] {\n font-family: var(--%NS%font-mono);\n font-size: 11px;\n color: var(--%NS%prism-text-ghost);\n padding: 2px 7px;\n background: var(--%NS%prism-input-bg);\n border-radius: var(--%NS%radius-xs);\n white-space: nowrap;\n }\n\n .a11y-status[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n color: var(--%NS%prism-text-muted);\n font-size: 13px;\n }\n .a11y-status--error[_ngcontent-%COMP%] { color: var(--%NS%prism-danger); }\n\n @media (max-width: 1100px) {\n .a11y-body[_ngcontent-%COMP%] { grid-template-columns: 1fr; }\n }"] });
151
+ } }, dependencies: [A11yScoreComponent], styles: ["[_nghost-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: auto;\n}\n\n.a11y-body[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 220px 1fr;\n gap: 20px;\n min-height: 0;\n padding: 18px 20px;\n}\n\n.a11y-body--loading[_ngcontent-%COMP%] {\n opacity: 0.55;\n transition: opacity var(--%NS%dur-base);\n}\n\n.score-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n align-items: center;\n align-self: start;\n padding: 14px;\n background: var(--%NS%prism-bg-surface);\n border: 1px solid var(--%NS%prism-border);\n border-radius: 10px;\n}\n\n.score-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: var(--%NS%prism-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.08em;\n}\n\n.score-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n margin-top: 2px;\n font-size: 11px;\n color: var(--%NS%prism-text-muted);\n}\n\n.score-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n align-items: center;\n}\n\n.score-meta[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n display: block;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n}\n\n.viol-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n min-width: 0;\n}\n\n.viol[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto 1fr auto;\n gap: 12px;\n align-items: center;\n padding: 10px 12px;\n background: var(--%NS%prism-bg-surface);\n border: 1px solid var(--%NS%prism-border);\n border-left: 3px solid var(--%NS%sev-color, var(--%NS%prism-primary));\n border-radius: 8px;\n transition: border-color var(--%NS%dur-fast);\n}\n\n.viol[_ngcontent-%COMP%]:hover {\n border-color: var(--%NS%prism-border-strong);\n}\n\n.viol-sev[_ngcontent-%COMP%] {\n padding: 2px 6px;\n font-family: var(--%NS%font-mono);\n font-size: 9.5px;\n font-weight: 700;\n color: var(--%NS%sev-color);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n background: color-mix(in srgb, var(--%NS%sev-color) 15%, transparent);\n border-radius: var(--%NS%radius-xs);\n}\n\n.viol-text[_ngcontent-%COMP%] {\n min-width: 0;\n font-size: 12.5px;\n color: var(--%NS%prism-text);\n}\n\n.viol-text[_ngcontent-%COMP%] b[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 1px;\n font-weight: 600;\n}\n\n.viol-text[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 11.5px;\n color: var(--%NS%prism-text-muted);\n}\n\n.viol-rule[_ngcontent-%COMP%] {\n padding: 2px 7px;\n font-family: var(--%NS%font-mono);\n font-size: 11px;\n color: var(--%NS%prism-text-ghost);\n white-space: nowrap;\n background: var(--%NS%prism-input-bg);\n border-radius: var(--%NS%radius-xs);\n}\n\n.a11y-status[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n font-size: 13px;\n color: var(--%NS%prism-text-muted);\n}\n\n.a11y-status--error[_ngcontent-%COMP%] {\n color: var(--%NS%prism-danger);\n}\n\n@media (width <= 1100px) {\n .a11y-body[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}"] });
153
152
  }
154
153
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(A11yViolationsComponent, [{
155
154
  type: Component,
156
- args: [{ selector: 'prism-a11y-violations', standalone: true, imports: [A11yScoreComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `
157
- @if (auditService.error()) {
158
- <div class="a11y-status a11y-status--error">
159
- Audit failed: {{ auditService.error() }}
160
- </div>
161
- } @else if (auditService.results() || auditService.running()) {
162
- <div class="a11y-body" [class.a11y-body--loading]="auditService.running()">
163
- <div class="score-wrap">
164
- <prism-a11y-score [score]="scoreResult()?.score ?? 0" />
165
- <div class="score-label">axe-core audit</div>
166
- <div class="score-meta">
167
- @if (scoreResult()?.critical) {
168
- <span
169
- ><i style="background: var(--prism-danger)"></i
170
- >{{ scoreResult()!.critical }} critical</span
171
- >
172
- } @if (scoreResult()?.moderate) {
173
- <span
174
- ><i style="background: var(--prism-warn)"></i
175
- >{{ scoreResult()!.moderate }} moderate</span
176
- >
177
- }
178
- <span
179
- ><i style="background: var(--prism-success)"></i
180
- >{{ scoreResult()?.passes ?? 0 }} pass</span
181
- >
182
- </div>
183
- </div>
184
- <div class="viol-list">
185
- @for (item of allResults(); track item.id + item.impact) {
186
- <div class="viol" [style.--sev-color]="sevColor(item.impact)">
187
- <span class="viol-sev">{{ item.impact ?? 'pass' }}</span>
188
- <div class="viol-text">
189
- <b>{{ item.description }}</b>
190
- @if (item.help) {
191
- <span>{{ item.help }}</span>
192
- }
193
- </div>
194
- <span class="viol-rule">{{ item.id }}</span>
195
- </div>
196
- } @empty { @if (!auditService.running()) {
197
- <div class="a11y-status">No results yet.</div>
198
- } }
199
- </div>
200
- </div>
201
- } @else {
202
- <div class="a11y-status">
203
- Select a component to run accessibility audit.
204
- </div>
205
- }
206
- `, styles: ["\n :host { display: flex; flex-direction: column; height: 100%; overflow: auto; }\n\n .a11y-body {\n padding: 18px 20px;\n display: grid;\n grid-template-columns: 220px 1fr;\n gap: 20px;\n min-height: 0;\n }\n .a11y-body--loading { opacity: 0.55; transition: opacity var(--dur-base); }\n\n .score-wrap {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 10px;\n padding: 14px;\n background: var(--prism-bg-surface);\n border: 1px solid var(--prism-border);\n border-radius: 10px;\n align-self: start;\n }\n\n .score-label {\n font-size: 11px;\n color: var(--prism-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.08em;\n font-weight: 600;\n }\n .score-meta {\n display: flex;\n gap: 12px;\n margin-top: 2px;\n font-size: 11px;\n color: var(--prism-text-muted);\n }\n .score-meta span { display: flex; align-items: center; gap: 4px; }\n .score-meta i { width: 6px; height: 6px; border-radius: 50%; display: block; }\n\n .viol-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n min-width: 0;\n }\n\n .viol {\n display: grid;\n grid-template-columns: auto 1fr auto;\n align-items: center;\n gap: 12px;\n padding: 10px 12px;\n background: var(--prism-bg-surface);\n border: 1px solid var(--prism-border);\n border-radius: 8px;\n border-left: 3px solid var(--sev-color, var(--prism-primary));\n transition: border-color var(--dur-fast);\n }\n .viol:hover { border-color: var(--prism-border-strong); }\n\n .viol-sev {\n font-family: var(--font-mono);\n font-size: 9.5px;\n font-weight: 700;\n padding: 2px 6px;\n border-radius: var(--radius-xs);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n background: color-mix(in srgb, var(--sev-color) 15%, transparent);\n color: var(--sev-color);\n }\n\n .viol-text {\n font-size: 12.5px;\n color: var(--prism-text);\n min-width: 0;\n }\n .viol-text b {\n display: block;\n font-weight: 600;\n margin-bottom: 1px;\n }\n .viol-text span {\n color: var(--prism-text-muted);\n font-size: 11.5px;\n }\n\n .viol-rule {\n font-family: var(--font-mono);\n font-size: 11px;\n color: var(--prism-text-ghost);\n padding: 2px 7px;\n background: var(--prism-input-bg);\n border-radius: var(--radius-xs);\n white-space: nowrap;\n }\n\n .a11y-status {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n color: var(--prism-text-muted);\n font-size: 13px;\n }\n .a11y-status--error { color: var(--prism-danger); }\n\n @media (max-width: 1100px) {\n .a11y-body { grid-template-columns: 1fr; }\n }\n "] }]
155
+ args: [{ selector: 'prism-a11y-violations', standalone: true, imports: [A11yScoreComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (auditService.error()) {\n <div class=\"a11y-status a11y-status--error\"> Audit failed: {{ auditService.error() }} </div>\n} @else if (auditService.results() || auditService.running()) {\n <div\n class=\"a11y-body\"\n [class.a11y-body--loading]=\"auditService.running()\">\n <div class=\"score-wrap\">\n <prism-a11y-score [score]=\"scoreResult()?.score ?? 0\" />\n <div class=\"score-label\">axe-core audit</div>\n <div class=\"score-meta\">\n @if (scoreResult()?.critical) {\n <span><i style=\"background: var(--prism-danger)\"></i>{{ scoreResult()!.critical }} critical</span>\n }\n @if (scoreResult()?.moderate) {\n <span><i style=\"background: var(--prism-warn)\"></i>{{ scoreResult()!.moderate }} moderate</span>\n }\n <span><i style=\"background: var(--prism-success)\"></i>{{ scoreResult()?.passes ?? 0 }} pass</span>\n </div>\n </div>\n <div class=\"viol-list\">\n @for (item of allResults(); track item.id + item.impact) {\n <div\n class=\"viol\"\n [style.--sev-color]=\"sevColor(item.impact)\">\n <span class=\"viol-sev\">{{ item.impact ?? 'pass' }}</span>\n <div class=\"viol-text\">\n <b>{{ item.description }}</b>\n @if (item.help) {\n <span>{{ item.help }}</span>\n }\n </div>\n <span class=\"viol-rule\">{{ item.id }}</span>\n </div>\n } @empty {\n @if (!auditService.running()) {\n <div class=\"a11y-status\">No results yet.</div>\n }\n }\n </div>\n </div>\n} @else {\n <div class=\"a11y-status\"> Select a component to run accessibility audit. </div>\n}\n", styles: [":host {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: auto;\n}\n\n.a11y-body {\n display: grid;\n grid-template-columns: 220px 1fr;\n gap: 20px;\n min-height: 0;\n padding: 18px 20px;\n}\n\n.a11y-body--loading {\n opacity: 0.55;\n transition: opacity var(--dur-base);\n}\n\n.score-wrap {\n display: flex;\n flex-direction: column;\n gap: 10px;\n align-items: center;\n align-self: start;\n padding: 14px;\n background: var(--prism-bg-surface);\n border: 1px solid var(--prism-border);\n border-radius: 10px;\n}\n\n.score-label {\n font-size: 11px;\n font-weight: 600;\n color: var(--prism-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.08em;\n}\n\n.score-meta {\n display: flex;\n gap: 12px;\n margin-top: 2px;\n font-size: 11px;\n color: var(--prism-text-muted);\n}\n\n.score-meta span {\n display: flex;\n gap: 4px;\n align-items: center;\n}\n\n.score-meta i {\n display: block;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n}\n\n.viol-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n min-width: 0;\n}\n\n.viol {\n display: grid;\n grid-template-columns: auto 1fr auto;\n gap: 12px;\n align-items: center;\n padding: 10px 12px;\n background: var(--prism-bg-surface);\n border: 1px solid var(--prism-border);\n border-left: 3px solid var(--sev-color, var(--prism-primary));\n border-radius: 8px;\n transition: border-color var(--dur-fast);\n}\n\n.viol:hover {\n border-color: var(--prism-border-strong);\n}\n\n.viol-sev {\n padding: 2px 6px;\n font-family: var(--font-mono);\n font-size: 9.5px;\n font-weight: 700;\n color: var(--sev-color);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n background: color-mix(in srgb, var(--sev-color) 15%, transparent);\n border-radius: var(--radius-xs);\n}\n\n.viol-text {\n min-width: 0;\n font-size: 12.5px;\n color: var(--prism-text);\n}\n\n.viol-text b {\n display: block;\n margin-bottom: 1px;\n font-weight: 600;\n}\n\n.viol-text span {\n font-size: 11.5px;\n color: var(--prism-text-muted);\n}\n\n.viol-rule {\n padding: 2px 7px;\n font-family: var(--font-mono);\n font-size: 11px;\n color: var(--prism-text-ghost);\n white-space: nowrap;\n background: var(--prism-input-bg);\n border-radius: var(--radius-xs);\n}\n\n.a11y-status {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n font-size: 13px;\n color: var(--prism-text-muted);\n}\n\n.a11y-status--error {\n color: var(--prism-danger);\n}\n\n@media (width <= 1100px) {\n .a11y-body {\n grid-template-columns: 1fr;\n }\n}\n"] }]
207
156
  }], null, null); })();
208
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yViolationsComponent, { className: "A11yViolationsComponent", filePath: "app/panels/a11y/a11y-violations.component.ts", lineNumber: 198 }); })();
157
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yViolationsComponent, { className: "A11yViolationsComponent", filePath: "app/panels/a11y/a11y-violations.component.ts", lineNumber: 31 }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"a11y.types.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,uFAAuF;IACvF,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,+EAA+E;AAC/E,MAAM,WAAW,UAAU;IACzB,mEAAmE;IACnE,KAAK,EAAE,eAAe,GAAG;QACvB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7C,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAC3B,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED,qDAAqD;AACrD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,eAAe,CAAC;IACvB;;;;OAIG;IACH,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAChE;AAED,MAAM,WAAW,iBAAiB;IAChC,6FAA6F;IAC7F,UAAU,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACrC,iGAAiG;IACjG,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;IACzC,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB"}
1
+ {"version":3,"file":"a11y.types.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC3B,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,uFAAuF;IACvF,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,+EAA+E;AAC/E,MAAM,WAAW,UAAU;IACvB,mEAAmE;IACnE,KAAK,EAAE,eAAe,GAAG;QACrB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7C,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAC7B,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAC3B,UAAU,EAAE,cAAc,CAAC;CAC9B;AAED,qDAAqD;AACrD,MAAM,WAAW,iBAAiB;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,eAAe,CAAC;IACvB;;;;OAIG;IACH,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAClE;AAED,MAAM,WAAW,iBAAiB;IAC9B,6FAA6F;IAC7F,UAAU,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACrC,iGAAiG;IACjG,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;IACzC,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CACpB"}
@@ -4,6 +4,6 @@ export const BUILTIN_HEADER_WIDGETS = [
4
4
  id: 'a11y-total',
5
5
  component: A11yHeaderBadgeComponent,
6
6
  placement: 'end',
7
- order: -20,
8
- },
7
+ order: -20
8
+ }
9
9
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"builtin-navigation-decorations.d.ts","sourceRoot":"","sources":["../../../src/app/panels/builtin-navigation-decorations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAGnF;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,EAAE,8BAA8B,EAexE,CAAC"}
1
+ {"version":3,"file":"builtin-navigation-decorations.d.ts","sourceRoot":"","sources":["../../../src/app/panels/builtin-navigation-decorations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAGnF;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,EAAE,8BAA8B,EAa1E,CAAC"}
@@ -15,6 +15,6 @@ export const BUILTIN_NAVIGATION_DECORATIONS = [
15
15
  if (meta.summary.variant === 'ok')
16
16
  return null;
17
17
  return { variant: meta.summary.variant, label: meta.summary.label };
18
- },
19
- },
18
+ }
19
+ }
20
20
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"builtin-panels.d.ts","sourceRoot":"","sources":["../../../src/app/panels/builtin-panels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAMpE,eAAO,MAAM,cAAc,EAAE,eAAe,EAK3C,CAAC"}
1
+ {"version":3,"file":"builtin-panels.d.ts","sourceRoot":"","sources":["../../../src/app/panels/builtin-panels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAMpE,eAAO,MAAM,cAAc,EAAE,eAAe,EAA0G,CAAC"}
@@ -1,10 +1,5 @@
1
1
  import { OVERVIEW_PANEL } from '../overview/overview-panel.js';
2
+ import { A11Y_CORE_PANEL } from './a11y/a11y-core.plugin.js';
2
3
  import { CONTROLS_PLUGIN } from './controls/controls-plugin.js';
3
4
  import { EVENTS_PLUGIN } from './events/events-plugin.js';
4
- import { A11Y_CORE_PANEL } from './a11y/a11y-core.plugin.js';
5
- export const BUILTIN_PANELS = [
6
- OVERVIEW_PANEL,
7
- ...(CONTROLS_PLUGIN.panels ?? []),
8
- ...(EVENTS_PLUGIN.panels ?? []),
9
- A11Y_CORE_PANEL,
10
- ];
5
+ export const BUILTIN_PANELS = [OVERVIEW_PANEL, ...(CONTROLS_PLUGIN.panels ?? []), ...(EVENTS_PLUGIN.panels ?? []), A11Y_CORE_PANEL];
@@ -7,7 +7,7 @@ export const CONTROLS_PLUGIN = {
7
7
  label: 'Controls',
8
8
  icon: 'sliders-horizontal',
9
9
  component: PrismControlsPanelComponent,
10
- position: 'bottom',
11
- },
12
- ],
10
+ position: 'bottom'
11
+ }
12
+ ]
13
13
  };
@@ -1 +1 @@
1
- {"version":3,"file":"non-editable-input-types.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/controls/non-editable-input-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAoBjE,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAIhE"}
1
+ {"version":3,"file":"non-editable-input-types.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/controls/non-editable-input-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAcjE,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAKhE"}
@@ -6,11 +6,7 @@
6
6
  * the JsonControl — which would otherwise crash on `undefined`/non-serializable
7
7
  * defaults and presents a misleading editor to the developer anyway.
8
8
  */
9
- const NON_EDITABLE_TYPE_NAMES = [
10
- 'TemplateRef',
11
- 'ElementRef',
12
- 'ViewContainerRef',
13
- ];
9
+ const NON_EDITABLE_TYPE_NAMES = ['TemplateRef', 'ElementRef', 'ViewContainerRef'];
14
10
  const NON_EDITABLE_TYPE_PATTERN = new RegExp(`\\b(?:${NON_EDITABLE_TYPE_NAMES.join('|')})\\b`);
15
11
  export function isNonEditableInputType(input) {
16
12
  const raw = input.rawType;
@@ -1 +1 @@
1
- {"version":3,"file":"prism-controls-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/controls/prism-controls-panel.component.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,iBAAiB,EACjB,SAAS,EACT,gBAAgB,EACjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAEpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;;AAGhF,qBA2Ma,2BAA2B;IACtC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,yBAAkC;IACtE,SAAS,CAAC,QAAQ,CAAC,eAAe,uBAAgC;IAClE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAE5D,QAAQ,CAAC,eAAe,+DAAwC;IAEhE,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,iBAAiB,GAAG,IAAI;IAOtE,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAIlD,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAI1C,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM;IAIxC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM;yCA1B7B,2BAA2B;2CAA3B,2BAA2B;CA6BvC"}
1
+ {"version":3,"file":"prism-controls-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/controls/prism-controls-panel.component.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAMtG,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAEpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;;AAGhF,qBAQa,2BAA2B;IACpC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,yBAAkC;IACtE,SAAS,CAAC,QAAQ,CAAC,eAAe,uBAAgC;IAClE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAE5D,QAAQ,CAAC,eAAe,+DAAwC;IAEhE,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,iBAAiB,GAAG,IAAI;IAItE,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAIlD,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAI1C,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM;IAIxC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM;yCAvB/B,2BAA2B;2CAA3B,2BAA2B;CA0BvC"}
@@ -1,5 +1,5 @@
1
1
  import { NgComponentOutlet } from '@angular/common';
2
- import { Component, inject, input, ChangeDetectionStrategy, } from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';
3
3
  import { BooleanControlComponent } from '../../controls/boolean-control.component.js';
4
4
  import { JsonControlComponent } from '../../controls/json-control.component.js';
5
5
  import { NumberControlComponent } from '../../controls/number-control.component.js';
@@ -160,8 +160,7 @@ export class PrismControlsPanelComponent {
160
160
  activeComponent = input(null, /* @ts-ignore */
161
161
  ...(ngDevMode ? [{ debugName: "activeComponent" }] : /* istanbul ignore next */ []));
162
162
  getCustomControl(input) {
163
- return (this.pluginService.controls().find((ctrl) => ctrl.matchType(input)) ??
164
- null);
163
+ return this.pluginService.controls().find((ctrl) => ctrl.matchType(input)) ?? null;
165
164
  }
166
165
  isNonEditable(input) {
167
166
  return isNonEditableInputType(input);
@@ -181,99 +180,10 @@ export class PrismControlsPanelComponent {
181
180
  } if (rf & 2) {
182
181
  let tmp_0_0;
183
182
  i0.ɵɵconditional((tmp_0_0 = ctx.navigationService.activeComponent()) ? 0 : -1, tmp_0_0);
184
- } }, dependencies: [NgComponentOutlet,
185
- BooleanControlComponent,
186
- StringControlComponent,
187
- NumberControlComponent,
188
- UnionControlComponent,
189
- JsonControlComponent], styles: [".ctl-panel[_ngcontent-%COMP%] {\n overflow-y: auto;\n height: 100%;\n }\n\n .ctl-toolbar[_ngcontent-%COMP%] {\n position: sticky;\n top: 0;\n z-index: 2;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 20px;\n background: var(--%NS%prism-bg-elevated);\n border-bottom: 1px solid var(--%NS%prism-border);\n }\n .ctl-dirty-info[_ngcontent-%COMP%] {\n font-size: 11.5px;\n font-family: var(--%NS%font-mono);\n color: var(--%NS%prism-text-muted);\n display: inline-flex;\n align-items: center;\n gap: 6px;\n }\n .ctl-dirty-dot[_ngcontent-%COMP%] {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: var(--%NS%prism-primary);\n box-shadow: 0 0 6px color-mix(in srgb, var(--%NS%prism-primary) 60%, transparent);\n }\n .ctl-reset-btn[_ngcontent-%COMP%] {\n height: 24px;\n padding: 0 10px;\n border-radius: 5px;\n font-size: 11.5px;\n font-weight: 500;\n font-family: var(--%NS%font-sans);\n color: var(--%NS%prism-text-muted);\n background: transparent;\n border: 1px solid var(--%NS%prism-border);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n transition: color var(--%NS%dur-fast), background var(--%NS%dur-fast), border-color var(--%NS%dur-fast);\n }\n .ctl-reset-btn[_ngcontent-%COMP%]:hover {\n color: var(--%NS%prism-text);\n border-color: color-mix(in srgb, var(--%NS%prism-primary) 40%, var(--%NS%prism-border));\n background: color-mix(in srgb, var(--%NS%prism-primary) 8%, transparent);\n }\n .ctl-reset-btn[_ngcontent-%COMP%]:focus-visible {\n outline: 2px solid var(--%NS%prism-primary);\n outline-offset: 1px;\n }\n\n .ctl-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 180px 1fr;\n align-items: center;\n gap: 12px;\n padding: 8px 20px;\n min-height: 40px;\n border-bottom: 1px solid var(--%NS%prism-border);\n }\n .ctl-row[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--%NS%prism-primary) 3%, transparent);\n }\n\n .ctl-label[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n }\n .ctl-name[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--%NS%prism-text);\n font-weight: 500;\n }\n .ctl-type[_ngcontent-%COMP%] {\n font-family: var(--%NS%font-mono);\n font-size: 10.5px;\n color: var(--%NS%prism-text-ghost);\n }\n .ctl-type[_ngcontent-%COMP%] b[_ngcontent-%COMP%] {\n color: var(--%NS%prism-primary);\n font-weight: 500;\n }\n\n .ctl-input[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n min-width: 0;\n }\n\n .ctl-not-editable[_ngcontent-%COMP%] {\n font-family: var(--%NS%font-mono);\n font-size: 11.5px;\n color: var(--%NS%prism-text-ghost);\n font-style: italic;\n }\n\n .ctl-empty[_ngcontent-%COMP%] {\n color: var(--%NS%prism-text-ghost);\n font-size: 13px;\n margin: 0;\n padding: 16px 20px;\n }"] });
183
+ } }, dependencies: [NgComponentOutlet, BooleanControlComponent, StringControlComponent, NumberControlComponent, UnionControlComponent, JsonControlComponent], styles: [".ctl-panel[_ngcontent-%COMP%] {\n height: 100%;\n overflow-y: auto;\n}\n\n.ctl-toolbar[_ngcontent-%COMP%] {\n position: sticky;\n top: 0;\n z-index: 2;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 20px;\n background: var(--%NS%prism-bg-elevated);\n border-bottom: 1px solid var(--%NS%prism-border);\n}\n\n.ctl-dirty-info[_ngcontent-%COMP%] {\n display: inline-flex;\n gap: 6px;\n align-items: center;\n font-family: var(--%NS%font-mono);\n font-size: 11.5px;\n color: var(--%NS%prism-text-muted);\n}\n\n.ctl-dirty-dot[_ngcontent-%COMP%] {\n width: 6px;\n height: 6px;\n background: var(--%NS%prism-primary);\n border-radius: 50%;\n box-shadow: 0 0 6px color-mix(in srgb, var(--%NS%prism-primary) 60%, transparent);\n}\n\n.ctl-reset-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n gap: 5px;\n align-items: center;\n height: 24px;\n padding: 0 10px;\n font-family: var(--%NS%font-sans);\n font-size: 11.5px;\n font-weight: 500;\n color: var(--%NS%prism-text-muted);\n cursor: pointer;\n background: transparent;\n border: 1px solid var(--%NS%prism-border);\n border-radius: 5px;\n transition:\n color var(--%NS%dur-fast),\n background var(--%NS%dur-fast),\n border-color var(--%NS%dur-fast);\n}\n\n.ctl-reset-btn[_ngcontent-%COMP%]:hover {\n color: var(--%NS%prism-text);\n background: color-mix(in srgb, var(--%NS%prism-primary) 8%, transparent);\n border-color: color-mix(in srgb, var(--%NS%prism-primary) 40%, var(--%NS%prism-border));\n}\n\n.ctl-reset-btn[_ngcontent-%COMP%]:focus-visible {\n outline: 2px solid var(--%NS%prism-primary);\n outline-offset: 1px;\n}\n\n.ctl-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 180px 1fr;\n gap: 12px;\n align-items: center;\n min-height: 40px;\n padding: 8px 20px;\n border-bottom: 1px solid var(--%NS%prism-border);\n}\n\n.ctl-row[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--%NS%prism-primary) 3%, transparent);\n}\n\n.ctl-label[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.ctl-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--%NS%prism-text);\n}\n\n.ctl-type[_ngcontent-%COMP%] {\n font-family: var(--%NS%font-mono);\n font-size: 10.5px;\n color: var(--%NS%prism-text-ghost);\n}\n\n.ctl-type[_ngcontent-%COMP%] b[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--%NS%prism-primary);\n}\n\n.ctl-input[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n align-items: center;\n min-width: 0;\n}\n\n.ctl-not-editable[_ngcontent-%COMP%] {\n font-family: var(--%NS%font-mono);\n font-size: 11.5px;\n font-style: italic;\n color: var(--%NS%prism-text-ghost);\n}\n\n.ctl-empty[_ngcontent-%COMP%] {\n padding: 16px 20px;\n margin: 0;\n font-size: 13px;\n color: var(--%NS%prism-text-ghost);\n}"] });
190
184
  }
191
185
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismControlsPanelComponent, [{
192
186
  type: Component,
193
- args: [{ selector: 'prism-controls-panel', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
194
- NgComponentOutlet,
195
- BooleanControlComponent,
196
- StringControlComponent,
197
- NumberControlComponent,
198
- UnionControlComponent,
199
- JsonControlComponent,
200
- ], template: `
201
- @if (navigationService.activeComponent(); as comp) {
202
- <div class="ctl-panel">
203
- @if (rendererService.dirtyInputCount(); as dirtyCount) {
204
- <div class="ctl-toolbar">
205
- <span class="ctl-dirty-info">
206
- <span class="ctl-dirty-dot" aria-hidden="true"></span>
207
- {{ dirtyCount }} {{ dirtyCount === 1 ? 'input' : 'inputs' }} modified
208
- </span>
209
- <button
210
- type="button"
211
- class="ctl-reset-btn"
212
- (click)="rendererService.resetInputsToVariantDefaults()"
213
- title="Reset all inputs to variant defaults"
214
- >
215
- <span aria-hidden="true">&#x21BB;</span> Reset
216
- </button>
217
- </div>
218
- } @for (input of comp.meta.inputs; track input.name) {
219
- <div class="ctl-row">
220
- @if (getCustomControl(input); as customCtrl) {
221
- <ng-container
222
- [ngComponentOutlet]="customCtrl.component"
223
- [ngComponentOutletInputs]="{
224
- inputMeta: input,
225
- rendererService: rendererService
226
- }"
227
- />
228
- } @else {
229
- <div class="ctl-label">
230
- <span class="ctl-name">{{ input.name }}</span>
231
- <span class="ctl-type"
232
- ><b>{{ input.rawType ?? input.type }}</b></span
233
- >
234
- </div>
235
- <div class="ctl-input">
236
- @if (isNonEditable(input)) {
237
- <span
238
- class="ctl-not-editable"
239
- title="This input type can't be edited from the controls panel"
240
- >Not editable</span
241
- >
242
- } @else { @switch (input.type) { @case ('boolean') {
243
- <prism-boolean-control
244
- [value]="asBoolean(rendererService.inputValues()[input.name])"
245
- (valueChange)="rendererService.updateInput(input.name, $event)"
246
- />
247
- } @case ('number') {
248
- <prism-number-control
249
- [value]="asNumber(rendererService.inputValues()[input.name])"
250
- (valueChange)="rendererService.updateInput(input.name, $event)"
251
- />
252
- } @case ('union') {
253
- <prism-union-control
254
- [value]="asString(rendererService.inputValues()[input.name])"
255
- [options]="input.values ?? []"
256
- (valueChange)="rendererService.updateInput(input.name, $event)"
257
- />
258
- } @case ('string') {
259
- <prism-string-control
260
- [value]="asString(rendererService.inputValues()[input.name])"
261
- (valueChange)="rendererService.updateInput(input.name, $event)"
262
- />
263
- } @default {
264
- <prism-json-control
265
- [value]="rendererService.inputValues()[input.name]"
266
- (valueChange)="rendererService.updateInput(input.name, $event)"
267
- />
268
- } } }
269
- </div>
270
- }
271
- </div>
272
- } @if (comp.meta.inputs.length === 0) {
273
- <p class="ctl-empty">No inputs available</p>
274
- }
275
- </div>
276
- }
277
- `, styles: ["\n .ctl-panel {\n overflow-y: auto;\n height: 100%;\n }\n\n .ctl-toolbar {\n position: sticky;\n top: 0;\n z-index: 2;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 20px;\n background: var(--prism-bg-elevated);\n border-bottom: 1px solid var(--prism-border);\n }\n .ctl-dirty-info {\n font-size: 11.5px;\n font-family: var(--font-mono);\n color: var(--prism-text-muted);\n display: inline-flex;\n align-items: center;\n gap: 6px;\n }\n .ctl-dirty-dot {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: var(--prism-primary);\n box-shadow: 0 0 6px color-mix(in srgb, var(--prism-primary) 60%, transparent);\n }\n .ctl-reset-btn {\n height: 24px;\n padding: 0 10px;\n border-radius: 5px;\n font-size: 11.5px;\n font-weight: 500;\n font-family: var(--font-sans);\n color: var(--prism-text-muted);\n background: transparent;\n border: 1px solid var(--prism-border);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n transition: color var(--dur-fast), background var(--dur-fast), border-color var(--dur-fast);\n }\n .ctl-reset-btn:hover {\n color: var(--prism-text);\n border-color: color-mix(in srgb, var(--prism-primary) 40%, var(--prism-border));\n background: color-mix(in srgb, var(--prism-primary) 8%, transparent);\n }\n .ctl-reset-btn:focus-visible {\n outline: 2px solid var(--prism-primary);\n outline-offset: 1px;\n }\n\n .ctl-row {\n display: grid;\n grid-template-columns: 180px 1fr;\n align-items: center;\n gap: 12px;\n padding: 8px 20px;\n min-height: 40px;\n border-bottom: 1px solid var(--prism-border);\n }\n .ctl-row:hover {\n background: color-mix(in srgb, var(--prism-primary) 3%, transparent);\n }\n\n .ctl-label {\n display: flex;\n flex-direction: column;\n gap: 2px;\n }\n .ctl-name {\n font-size: 13px;\n color: var(--prism-text);\n font-weight: 500;\n }\n .ctl-type {\n font-family: var(--font-mono);\n font-size: 10.5px;\n color: var(--prism-text-ghost);\n }\n .ctl-type b {\n color: var(--prism-primary);\n font-weight: 500;\n }\n\n .ctl-input {\n display: flex;\n align-items: center;\n gap: 6px;\n min-width: 0;\n }\n\n .ctl-not-editable {\n font-family: var(--font-mono);\n font-size: 11.5px;\n color: var(--prism-text-ghost);\n font-style: italic;\n }\n\n .ctl-empty {\n color: var(--prism-text-ghost);\n font-size: 13px;\n margin: 0;\n padding: 16px 20px;\n }\n "] }]
187
+ args: [{ selector: 'prism-controls-panel', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgComponentOutlet, BooleanControlComponent, StringControlComponent, NumberControlComponent, UnionControlComponent, JsonControlComponent], template: "@if (navigationService.activeComponent(); as comp) {\n <div class=\"ctl-panel\">\n @if (rendererService.dirtyInputCount(); as dirtyCount) {\n <div class=\"ctl-toolbar\">\n <span class=\"ctl-dirty-info\">\n <span\n class=\"ctl-dirty-dot\"\n aria-hidden=\"true\"></span>\n {{ dirtyCount }} {{ dirtyCount === 1 ? 'input' : 'inputs' }} modified\n </span>\n <button\n type=\"button\"\n class=\"ctl-reset-btn\"\n (click)=\"rendererService.resetInputsToVariantDefaults()\"\n title=\"Reset all inputs to variant defaults\">\n <span aria-hidden=\"true\">&#x21BB;</span> Reset\n </button>\n </div>\n }\n @for (input of comp.meta.inputs; track input.name) {\n <div class=\"ctl-row\">\n @if (getCustomControl(input); as customCtrl) {\n <ng-container\n [ngComponentOutlet]=\"customCtrl.component\"\n [ngComponentOutletInputs]=\"{\n inputMeta: input,\n rendererService: rendererService\n }\" />\n } @else {\n <div class=\"ctl-label\">\n <span class=\"ctl-name\">{{ input.name }}</span>\n <span class=\"ctl-type\"\n ><b>{{ input.rawType ?? input.type }}</b></span\n >\n </div>\n <div class=\"ctl-input\">\n @if (isNonEditable(input)) {\n <span\n class=\"ctl-not-editable\"\n title=\"This input type can't be edited from the controls panel\"\n >Not editable</span\n >\n } @else {\n @switch (input.type) {\n @case ('boolean') {\n <prism-boolean-control\n [value]=\"asBoolean(rendererService.inputValues()[input.name])\"\n (valueChange)=\"rendererService.updateInput(input.name, $event)\" />\n }\n @case ('number') {\n <prism-number-control\n [value]=\"asNumber(rendererService.inputValues()[input.name])\"\n (valueChange)=\"rendererService.updateInput(input.name, $event)\" />\n }\n @case ('union') {\n <prism-union-control\n [value]=\"asString(rendererService.inputValues()[input.name])\"\n [options]=\"input.values ?? []\"\n (valueChange)=\"rendererService.updateInput(input.name, $event)\" />\n }\n @case ('string') {\n <prism-string-control\n [value]=\"asString(rendererService.inputValues()[input.name])\"\n (valueChange)=\"rendererService.updateInput(input.name, $event)\" />\n }\n @default {\n <prism-json-control\n [value]=\"rendererService.inputValues()[input.name]\"\n (valueChange)=\"rendererService.updateInput(input.name, $event)\" />\n }\n }\n }\n </div>\n }\n </div>\n }\n @if (comp.meta.inputs.length === 0) {\n <p class=\"ctl-empty\">No inputs available</p>\n }\n </div>\n}\n", styles: [".ctl-panel {\n height: 100%;\n overflow-y: auto;\n}\n\n.ctl-toolbar {\n position: sticky;\n top: 0;\n z-index: 2;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 20px;\n background: var(--prism-bg-elevated);\n border-bottom: 1px solid var(--prism-border);\n}\n\n.ctl-dirty-info {\n display: inline-flex;\n gap: 6px;\n align-items: center;\n font-family: var(--font-mono);\n font-size: 11.5px;\n color: var(--prism-text-muted);\n}\n\n.ctl-dirty-dot {\n width: 6px;\n height: 6px;\n background: var(--prism-primary);\n border-radius: 50%;\n box-shadow: 0 0 6px color-mix(in srgb, var(--prism-primary) 60%, transparent);\n}\n\n.ctl-reset-btn {\n display: inline-flex;\n gap: 5px;\n align-items: center;\n height: 24px;\n padding: 0 10px;\n font-family: var(--font-sans);\n font-size: 11.5px;\n font-weight: 500;\n color: var(--prism-text-muted);\n cursor: pointer;\n background: transparent;\n border: 1px solid var(--prism-border);\n border-radius: 5px;\n transition:\n color var(--dur-fast),\n background var(--dur-fast),\n border-color var(--dur-fast);\n}\n\n.ctl-reset-btn:hover {\n color: var(--prism-text);\n background: color-mix(in srgb, var(--prism-primary) 8%, transparent);\n border-color: color-mix(in srgb, var(--prism-primary) 40%, var(--prism-border));\n}\n\n.ctl-reset-btn:focus-visible {\n outline: 2px solid var(--prism-primary);\n outline-offset: 1px;\n}\n\n.ctl-row {\n display: grid;\n grid-template-columns: 180px 1fr;\n gap: 12px;\n align-items: center;\n min-height: 40px;\n padding: 8px 20px;\n border-bottom: 1px solid var(--prism-border);\n}\n\n.ctl-row:hover {\n background: color-mix(in srgb, var(--prism-primary) 3%, transparent);\n}\n\n.ctl-label {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.ctl-name {\n font-size: 13px;\n font-weight: 500;\n color: var(--prism-text);\n}\n\n.ctl-type {\n font-family: var(--font-mono);\n font-size: 10.5px;\n color: var(--prism-text-ghost);\n}\n\n.ctl-type b {\n font-weight: 500;\n color: var(--prism-primary);\n}\n\n.ctl-input {\n display: flex;\n gap: 6px;\n align-items: center;\n min-width: 0;\n}\n\n.ctl-not-editable {\n font-family: var(--font-mono);\n font-size: 11.5px;\n font-style: italic;\n color: var(--prism-text-ghost);\n}\n\n.ctl-empty {\n padding: 16px 20px;\n margin: 0;\n font-size: 13px;\n color: var(--prism-text-ghost);\n}\n"] }]
278
188
  }], null, { activeComponent: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeComponent", required: false }] }] }); })();
279
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismControlsPanelComponent, { className: "PrismControlsPanelComponent", filePath: "app/panels/controls/prism-controls-panel.component.ts", lineNumber: 226 }); })();
189
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismControlsPanelComponent, { className: "PrismControlsPanelComponent", filePath: "app/panels/controls/prism-controls-panel.component.ts", lineNumber: 22 }); })();
@@ -7,7 +7,7 @@ export const EVENTS_PLUGIN = {
7
7
  label: 'Events',
8
8
  icon: 'zap',
9
9
  component: PrismEventsPanelComponent,
10
- position: 'bottom',
11
- },
12
- ],
10
+ position: 'bottom'
11
+ }
12
+ ]
13
13
  };
@@ -1 +1 @@
1
- {"version":3,"file":"prism-events-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/events/prism-events-panel.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;;AAGjF,qBA+Ea,yBAAyB;IACpC,SAAS,CAAC,QAAQ,CAAC,eAAe,uBAAgC;IAElE,QAAQ,CAAC,eAAe,+DAAwC;IAEhE,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAQxC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;yCAbxB,yBAAyB;2CAAzB,yBAAyB;CAgBrC"}
1
+ {"version":3,"file":"prism-events-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/events/prism-events-panel.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;;AAGjF,qBAQa,yBAAyB;IAClC,SAAS,CAAC,QAAQ,CAAC,eAAe,uBAAgC;IAElE,QAAQ,CAAC,eAAe,+DAAwC;IAEhE,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IASxC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;yCAd1B,yBAAyB;2CAAzB,yBAAyB;CAiBrC"}
@@ -1,4 +1,4 @@
1
- import { Component, inject, input, ChangeDetectionStrategy } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';
2
2
  import { PrismEventLogService } from '../../services/prism-event-log.service.js';
3
3
  import { PrismJsonNodeComponent } from './prism-json-node.component.js';
4
4
  import * as i0 from "@angular/core";
@@ -42,7 +42,7 @@ export class PrismEventsPanelComponent {
42
42
  const d = new Date(ts);
43
43
  return d.toLocaleTimeString('en-US', {
44
44
  hour12: false,
45
- fractionalSecondDigits: 3,
45
+ fractionalSecondDigits: 3
46
46
  });
47
47
  }
48
48
  padIdx(n) {
@@ -56,28 +56,10 @@ export class PrismEventsPanelComponent {
56
56
  } if (rf & 2) {
57
57
  i0.ɵɵadvance(2);
58
58
  i0.ɵɵrepeater(ctx.eventLogService.events());
59
- } }, dependencies: [PrismJsonNodeComponent], styles: [".ev-panel[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .ev-body[_ngcontent-%COMP%] {\n padding: 6px 0;\n overflow-y: auto;\n flex: 1;\n }\n\n .ev[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto auto 1fr auto;\n align-items: center;\n gap: 12px;\n padding: 6px 20px;\n font-family: var(--%NS%font-mono);\n font-size: 12px;\n border-bottom: 1px solid var(--%NS%prism-border);\n min-height: 32px;\n }\n .ev[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--%NS%prism-primary) 3%, transparent);\n }\n\n .ev-time[_ngcontent-%COMP%] {\n color: var(--%NS%prism-text-ghost);\n font-size: 11px;\n }\n .ev-idx[_ngcontent-%COMP%] {\n color: var(--%NS%prism-text-muted);\n font-size: 11px;\n }\n .ev-name[_ngcontent-%COMP%] {\n color: var(--%NS%prism-primary);\n font-weight: 500;\n }\n .ev-args[_ngcontent-%COMP%] {\n color: var(--%NS%prism-text-2);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .ev-empty[_ngcontent-%COMP%] {\n color: var(--%NS%prism-text-ghost);\n font-size: 13px;\n padding: 16px 20px;\n margin: 0;\n }"] });
59
+ } }, dependencies: [PrismJsonNodeComponent], styles: [".ev-panel[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.ev-body[_ngcontent-%COMP%] {\n flex: 1;\n padding: 6px 0;\n overflow-y: auto;\n}\n\n.ev[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto auto 1fr auto;\n gap: 12px;\n align-items: center;\n min-height: 32px;\n padding: 6px 20px;\n font-family: var(--%NS%font-mono);\n font-size: 12px;\n border-bottom: 1px solid var(--%NS%prism-border);\n}\n\n.ev[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--%NS%prism-primary) 3%, transparent);\n}\n\n.ev-time[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--%NS%prism-text-ghost);\n}\n\n.ev-idx[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--%NS%prism-text-muted);\n}\n\n.ev-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--%NS%prism-primary);\n}\n\n.ev-args[_ngcontent-%COMP%] {\n overflow: hidden;\n text-overflow: ellipsis;\n color: var(--%NS%prism-text-2);\n white-space: nowrap;\n}\n\n.ev-empty[_ngcontent-%COMP%] {\n padding: 16px 20px;\n margin: 0;\n font-size: 13px;\n color: var(--%NS%prism-text-ghost);\n}"] });
60
60
  }
61
61
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismEventsPanelComponent, [{
62
62
  type: Component,
63
- args: [{ selector: 'prism-events-panel', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismJsonNodeComponent], template: `
64
- <div class="ev-panel">
65
- <div class="ev-body">
66
- @for (entry of eventLogService.events(); track entry.id; let i = $index)
67
- {
68
- <div class="ev">
69
- <span class="ev-time">{{ formatTime(entry.timestamp) }}</span>
70
- <span class="ev-idx"
71
- >#{{ padIdx(eventLogService.events().length - i) }}</span
72
- >
73
- <span class="ev-name">{{ entry.name }}</span>
74
- <span class="ev-args"><prism-json-node [value]="entry.value" /></span>
75
- </div>
76
- } @empty {
77
- <p class="ev-empty">No events recorded</p>
78
- }
79
- </div>
80
- </div>
81
- `, styles: ["\n .ev-panel {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .ev-body {\n padding: 6px 0;\n overflow-y: auto;\n flex: 1;\n }\n\n .ev {\n display: grid;\n grid-template-columns: auto auto 1fr auto;\n align-items: center;\n gap: 12px;\n padding: 6px 20px;\n font-family: var(--font-mono);\n font-size: 12px;\n border-bottom: 1px solid var(--prism-border);\n min-height: 32px;\n }\n .ev:hover {\n background: color-mix(in srgb, var(--prism-primary) 3%, transparent);\n }\n\n .ev-time {\n color: var(--prism-text-ghost);\n font-size: 11px;\n }\n .ev-idx {\n color: var(--prism-text-muted);\n font-size: 11px;\n }\n .ev-name {\n color: var(--prism-primary);\n font-weight: 500;\n }\n .ev-args {\n color: var(--prism-text-2);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .ev-empty {\n color: var(--prism-text-ghost);\n font-size: 13px;\n padding: 16px 20px;\n margin: 0;\n }\n "] }]
63
+ args: [{ selector: 'prism-events-panel', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismJsonNodeComponent], template: "<div class=\"ev-panel\">\n <div class=\"ev-body\">\n @for (entry of eventLogService.events(); track entry.id; let i = $index) {\n <div class=\"ev\">\n <span class=\"ev-time\">{{ formatTime(entry.timestamp) }}</span>\n <span class=\"ev-idx\">#{{ padIdx(eventLogService.events().length - i) }}</span>\n <span class=\"ev-name\">{{ entry.name }}</span>\n <span class=\"ev-args\"><prism-json-node [value]=\"entry.value\" /></span>\n </div>\n } @empty {\n <p class=\"ev-empty\">No events recorded</p>\n }\n </div>\n</div>\n", styles: [".ev-panel {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.ev-body {\n flex: 1;\n padding: 6px 0;\n overflow-y: auto;\n}\n\n.ev {\n display: grid;\n grid-template-columns: auto auto 1fr auto;\n gap: 12px;\n align-items: center;\n min-height: 32px;\n padding: 6px 20px;\n font-family: var(--font-mono);\n font-size: 12px;\n border-bottom: 1px solid var(--prism-border);\n}\n\n.ev:hover {\n background: color-mix(in srgb, var(--prism-primary) 3%, transparent);\n}\n\n.ev-time {\n font-size: 11px;\n color: var(--prism-text-ghost);\n}\n\n.ev-idx {\n font-size: 11px;\n color: var(--prism-text-muted);\n}\n\n.ev-name {\n font-weight: 500;\n color: var(--prism-primary);\n}\n\n.ev-args {\n overflow: hidden;\n text-overflow: ellipsis;\n color: var(--prism-text-2);\n white-space: nowrap;\n}\n\n.ev-empty {\n padding: 16px 20px;\n margin: 0;\n font-size: 13px;\n color: var(--prism-text-ghost);\n}\n"] }]
82
64
  }], null, { activeComponent: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeComponent", required: false }] }] }); })();
83
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismEventsPanelComponent, { className: "PrismEventsPanelComponent", filePath: "app/panels/events/prism-events-panel.component.ts", lineNumber: 85 }); })();
65
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismEventsPanelComponent, { className: "PrismEventsPanelComponent", filePath: "app/panels/events/prism-events-panel.component.ts", lineNumber: 14 }); })();