@ng-prism/core 22.2.1 → 22.4.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 (359) hide show
  1. package/README.md +34 -36
  2. package/builders.json +11 -11
  3. package/dist/app/canvas/canvas-bg.styles.d.ts +7 -12
  4. package/dist/app/canvas/canvas-bg.styles.d.ts.map +1 -1
  5. package/dist/app/canvas/canvas-bg.styles.js +37 -22
  6. package/dist/app/canvas/measure-geometry.d.ts +140 -0
  7. package/dist/app/canvas/measure-geometry.d.ts.map +1 -0
  8. package/dist/app/canvas/measure-geometry.js +217 -0
  9. package/dist/app/canvas/measure-keyboard.d.ts +20 -0
  10. package/dist/app/canvas/measure-keyboard.d.ts.map +1 -0
  11. package/dist/app/canvas/measure-keyboard.js +34 -0
  12. package/dist/app/canvas/measure-quad.d.ts +114 -0
  13. package/dist/app/canvas/measure-quad.d.ts.map +1 -0
  14. package/dist/app/canvas/measure-quad.js +173 -0
  15. package/dist/app/canvas/measure-snap.d.ts +35 -0
  16. package/dist/app/canvas/measure-snap.d.ts.map +1 -0
  17. package/dist/app/canvas/measure-snap.js +63 -0
  18. package/dist/app/canvas/prism-canvas-bg-pill.component.d.ts.map +1 -1
  19. package/dist/app/canvas/prism-canvas-bg-pill.component.js +3 -18
  20. package/dist/app/canvas/prism-canvas-measure.component.d.ts +142 -0
  21. package/dist/app/canvas/prism-canvas-measure.component.d.ts.map +1 -0
  22. package/dist/app/canvas/prism-canvas-measure.component.js +554 -0
  23. package/dist/app/canvas/prism-canvas-pin-row.component.d.ts +23 -0
  24. package/dist/app/canvas/prism-canvas-pin-row.component.d.ts.map +1 -0
  25. package/dist/app/canvas/prism-canvas-pin-row.component.js +64 -0
  26. package/dist/app/canvas/prism-canvas-rulers.component.d.ts +1 -0
  27. package/dist/app/canvas/prism-canvas-rulers.component.d.ts.map +1 -1
  28. package/dist/app/canvas/prism-canvas-rulers.component.js +9 -14
  29. package/dist/app/canvas/prism-canvas-toolbar.component.d.ts +28 -28
  30. package/dist/app/canvas/prism-canvas-toolbar.component.d.ts.map +1 -1
  31. package/dist/app/canvas/prism-canvas-toolbar.component.js +124 -162
  32. package/dist/app/canvas/prism-template-popover.component.d.ts.map +1 -1
  33. package/dist/app/canvas/prism-template-popover.component.js +8 -49
  34. package/dist/app/canvas/viewport-snap.d.ts +12 -0
  35. package/dist/app/canvas/viewport-snap.d.ts.map +1 -0
  36. package/dist/app/canvas/viewport-snap.js +23 -0
  37. package/dist/app/component-head/head-metrics.d.ts +2 -2
  38. package/dist/app/component-head/head-metrics.d.ts.map +1 -1
  39. package/dist/app/component-head/head-metrics.js +3 -3
  40. package/dist/app/component-head/prism-component-head.component.d.ts +3 -3
  41. package/dist/app/component-head/prism-component-head.component.d.ts.map +1 -1
  42. package/dist/app/component-head/prism-component-head.component.js +24 -64
  43. package/dist/app/component-head/prism-head-gauge.component.d.ts.map +1 -1
  44. package/dist/app/component-head/prism-head-gauge.component.js +4 -36
  45. package/dist/app/component-head/prism-head-info.component.d.ts +1 -1
  46. package/dist/app/component-head/prism-head-info.component.d.ts.map +1 -1
  47. package/dist/app/component-head/prism-head-info.component.js +4 -37
  48. package/dist/app/component-head/prism-stat.component.d.ts +1 -1
  49. package/dist/app/component-head/prism-stat.component.d.ts.map +1 -1
  50. package/dist/app/component-head/prism-stat.component.js +4 -15
  51. package/dist/app/controls/boolean-control.component.d.ts.map +1 -1
  52. package/dist/app/controls/boolean-control.component.js +4 -12
  53. package/dist/app/controls/json-control.component.d.ts.map +1 -1
  54. package/dist/app/controls/json-control.component.js +4 -24
  55. package/dist/app/controls/number-control.component.d.ts.map +1 -1
  56. package/dist/app/controls/number-control.component.js +4 -11
  57. package/dist/app/controls/string-control.component.d.ts.map +1 -1
  58. package/dist/app/controls/string-control.component.js +4 -11
  59. package/dist/app/controls/union-control.component.d.ts.map +1 -1
  60. package/dist/app/controls/union-control.component.js +4 -16
  61. package/dist/app/directives/prism-resizer.directive.d.ts +24 -1
  62. package/dist/app/directives/prism-resizer.directive.d.ts.map +1 -1
  63. package/dist/app/directives/prism-resizer.directive.js +44 -7
  64. package/dist/app/directives/resize-value.d.ts +22 -0
  65. package/dist/app/directives/resize-value.d.ts.map +1 -0
  66. package/dist/app/directives/resize-value.js +23 -0
  67. package/dist/app/discovery-manifest.d.ts +2 -2
  68. package/dist/app/discovery-manifest.d.ts.map +1 -1
  69. package/dist/app/discovery-manifest.js +16 -22
  70. package/dist/app/header/prism-header-widget-host.component.d.ts.map +1 -1
  71. package/dist/app/header/prism-header-widget-host.component.js +4 -8
  72. package/dist/app/header/prism-header.component.d.ts.map +1 -1
  73. package/dist/app/header/prism-header.component.js +9 -78
  74. package/dist/app/hmr.d.ts.map +1 -1
  75. package/dist/app/icons/icon-registry.d.ts +2 -2
  76. package/dist/app/icons/icon-registry.d.ts.map +1 -1
  77. package/dist/app/icons/icon-registry.js +5 -3
  78. package/dist/app/icons/prism-icon.component.d.ts +2 -2
  79. package/dist/app/icons/prism-icon.component.d.ts.map +1 -1
  80. package/dist/app/icons/prism-icon.component.js +9 -9
  81. package/dist/app/index.d.ts +3 -3
  82. package/dist/app/index.d.ts.map +1 -1
  83. package/dist/app/index.js +17 -24
  84. package/dist/app/layout-menu/prism-layout-menu.component.d.ts.map +1 -1
  85. package/dist/app/layout-menu/prism-layout-menu.component.js +3 -77
  86. package/dist/app/overview/overview-panel.js +1 -1
  87. package/dist/app/overview/overview-visibility.d.ts +1 -1
  88. package/dist/app/overview/overview-visibility.d.ts.map +1 -1
  89. package/dist/app/overview/overview-visibility.js +1 -1
  90. package/dist/app/overview/prism-overview-cell.component.d.ts +2 -2
  91. package/dist/app/overview/prism-overview-cell.component.d.ts.map +1 -1
  92. package/dist/app/overview/prism-overview-cell.component.js +17 -25
  93. package/dist/app/overview/prism-overview.component.d.ts +2 -2
  94. package/dist/app/overview/prism-overview.component.d.ts.map +1 -1
  95. package/dist/app/overview/prism-overview.component.js +6 -14
  96. package/dist/app/page-renderer/prism-page-renderer.component.d.ts.map +1 -1
  97. package/dist/app/page-renderer/prism-page-renderer.component.js +4 -17
  98. package/dist/app/panels/a11y/a11y-audit.service.d.ts.map +1 -1
  99. package/dist/app/panels/a11y/a11y-audit.service.js +14 -2
  100. package/dist/app/panels/a11y/a11y-core.plugin.d.ts.map +1 -1
  101. package/dist/app/panels/a11y/a11y-core.plugin.js +1 -1
  102. package/dist/app/panels/a11y/a11y-dom-utils.d.ts.map +1 -1
  103. package/dist/app/panels/a11y/a11y-dom-utils.js +9 -6
  104. package/dist/app/panels/a11y/a11y-header-badge.component.d.ts.map +1 -1
  105. package/dist/app/panels/a11y/a11y-header-badge.component.js +6 -22
  106. package/dist/app/panels/a11y/a11y-keyboard-overlay.component.d.ts.map +1 -1
  107. package/dist/app/panels/a11y/a11y-keyboard-overlay.component.js +6 -25
  108. package/dist/app/panels/a11y/a11y-keyboard.component.d.ts.map +1 -1
  109. package/dist/app/panels/a11y/a11y-keyboard.component.js +5 -36
  110. package/dist/app/panels/a11y/a11y-keyboard.service.d.ts.map +1 -1
  111. package/dist/app/panels/a11y/a11y-keyboard.service.js +2 -2
  112. package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts.map +1 -1
  113. package/dist/app/panels/a11y/a11y-overlay-host.component.js +5 -32
  114. package/dist/app/panels/a11y/a11y-panel-state.service.d.ts.map +1 -1
  115. package/dist/app/panels/a11y/a11y-panel.component.d.ts +1 -1
  116. package/dist/app/panels/a11y/a11y-panel.component.d.ts.map +1 -1
  117. package/dist/app/panels/a11y/a11y-panel.component.js +7 -69
  118. package/dist/app/panels/a11y/a11y-perspective.service.d.ts.map +1 -1
  119. package/dist/app/panels/a11y/a11y-score.component.d.ts.map +1 -1
  120. package/dist/app/panels/a11y/a11y-score.component.js +4 -31
  121. package/dist/app/panels/a11y/a11y-sr-overlay.component.d.ts.map +1 -1
  122. package/dist/app/panels/a11y/a11y-sr-overlay.component.js +8 -28
  123. package/dist/app/panels/a11y/a11y-sr.component.d.ts.map +1 -1
  124. package/dist/app/panels/a11y/a11y-sr.component.js +5 -28
  125. package/dist/app/panels/a11y/a11y-sr.service.d.ts.map +1 -1
  126. package/dist/app/panels/a11y/a11y-sr.service.js +4 -7
  127. package/dist/app/panels/a11y/a11y-summary.d.ts +3 -4
  128. package/dist/app/panels/a11y/a11y-summary.d.ts.map +1 -1
  129. package/dist/app/panels/a11y/a11y-summary.js +5 -9
  130. package/dist/app/panels/a11y/a11y-thresholds.d.ts +1 -1
  131. package/dist/app/panels/a11y/a11y-thresholds.d.ts.map +1 -1
  132. package/dist/app/panels/a11y/a11y-thresholds.js +2 -2
  133. package/dist/app/panels/a11y/a11y-tree.component.d.ts.map +1 -1
  134. package/dist/app/panels/a11y/a11y-tree.component.js +9 -46
  135. package/dist/app/panels/a11y/a11y-tree.service.d.ts.map +1 -1
  136. package/dist/app/panels/a11y/a11y-tree.service.js +3 -5
  137. package/dist/app/panels/a11y/a11y-violations.component.d.ts.map +1 -1
  138. package/dist/app/panels/a11y/a11y-violations.component.js +7 -58
  139. package/dist/app/panels/a11y/a11y.types.d.ts +1 -1
  140. package/dist/app/panels/a11y/a11y.types.d.ts.map +1 -1
  141. package/dist/app/panels/builtin-header-widgets.js +2 -2
  142. package/dist/app/panels/builtin-navigation-decorations.d.ts +1 -1
  143. package/dist/app/panels/builtin-navigation-decorations.d.ts.map +1 -1
  144. package/dist/app/panels/builtin-navigation-decorations.js +3 -3
  145. package/dist/app/panels/builtin-panels.d.ts.map +1 -1
  146. package/dist/app/panels/builtin-panels.js +2 -7
  147. package/dist/app/panels/controls/controls-plugin.js +3 -3
  148. package/dist/app/panels/controls/non-editable-input-types.d.ts.map +1 -1
  149. package/dist/app/panels/controls/non-editable-input-types.js +2 -6
  150. package/dist/app/panels/controls/prism-controls-panel.component.d.ts.map +1 -1
  151. package/dist/app/panels/controls/prism-controls-panel.component.js +5 -95
  152. package/dist/app/panels/events/events-plugin.js +3 -3
  153. package/dist/app/panels/events/prism-events-panel.component.d.ts.map +1 -1
  154. package/dist/app/panels/events/prism-events-panel.component.js +5 -23
  155. package/dist/app/panels/events/prism-json-node.component.d.ts.map +1 -1
  156. package/dist/app/panels/events/prism-json-node.component.js +4 -86
  157. package/dist/app/panels/events/prism-json-node.utils.d.ts.map +1 -1
  158. package/dist/app/panels/panel-host/panel-badge.d.ts +1 -1
  159. package/dist/app/panels/panel-host/panel-badge.d.ts.map +1 -1
  160. package/dist/app/panels/panel-host/panel-badge.js +2 -4
  161. package/dist/app/panels/panel-host/prism-panel-host.component.d.ts +1 -1
  162. package/dist/app/panels/panel-host/prism-panel-host.component.d.ts.map +1 -1
  163. package/dist/app/panels/panel-host/prism-panel-host.component.js +12 -67
  164. package/dist/app/provide-prism.d.ts +1 -1
  165. package/dist/app/provide-prism.d.ts.map +1 -1
  166. package/dist/app/provide-prism.js +8 -12
  167. package/dist/app/renderer/known-inputs.d.ts +1 -1
  168. package/dist/app/renderer/known-inputs.d.ts.map +1 -1
  169. package/dist/app/renderer/known-inputs.js +1 -1
  170. package/dist/app/renderer/overlay-resolver.d.ts +17 -3
  171. package/dist/app/renderer/overlay-resolver.d.ts.map +1 -1
  172. package/dist/app/renderer/overlay-resolver.js +10 -5
  173. package/dist/app/renderer/prism-renderer.component.d.ts +28 -3
  174. package/dist/app/renderer/prism-renderer.component.d.ts.map +1 -1
  175. package/dist/app/renderer/prism-renderer.component.js +107 -80
  176. package/dist/app/renderer/projectable-content.d.ts.map +1 -1
  177. package/dist/app/renderer/projectable-content.js +4 -6
  178. package/dist/app/renderer/snippet-generator.d.ts +1 -1
  179. package/dist/app/renderer/snippet-generator.d.ts.map +1 -1
  180. package/dist/app/renderer/snippet-generator.js +7 -22
  181. package/dist/app/services/navigation-item.types.d.ts +1 -1
  182. package/dist/app/services/navigation-item.types.d.ts.map +1 -1
  183. package/dist/app/services/prism-canvas.service.d.ts +33 -0
  184. package/dist/app/services/prism-canvas.service.d.ts.map +1 -1
  185. package/dist/app/services/prism-canvas.service.js +71 -6
  186. package/dist/app/services/prism-capture.service.d.ts +24 -50
  187. package/dist/app/services/prism-capture.service.d.ts.map +1 -1
  188. package/dist/app/services/prism-capture.service.js +62 -146
  189. package/dist/app/services/prism-event-log.service.d.ts.map +1 -1
  190. package/dist/app/services/prism-event-log.service.js +1 -4
  191. package/dist/app/services/prism-layout.service.d.ts.map +1 -1
  192. package/dist/app/services/prism-layout.service.js +5 -4
  193. package/dist/app/services/prism-manifest.service.d.ts +1 -1
  194. package/dist/app/services/prism-manifest.service.d.ts.map +1 -1
  195. package/dist/app/services/prism-manifest.service.js +1 -1
  196. package/dist/app/services/prism-measure.service.d.ts +44 -0
  197. package/dist/app/services/prism-measure.service.d.ts.map +1 -0
  198. package/dist/app/services/prism-measure.service.js +91 -0
  199. package/dist/app/services/prism-navigation.service.d.ts +1 -1
  200. package/dist/app/services/prism-navigation.service.d.ts.map +1 -1
  201. package/dist/app/services/prism-navigation.service.js +5 -13
  202. package/dist/app/services/prism-panel.service.d.ts +2 -2
  203. package/dist/app/services/prism-panel.service.d.ts.map +1 -1
  204. package/dist/app/services/prism-panel.service.js +4 -7
  205. package/dist/app/services/prism-persistence.service.d.ts.map +1 -1
  206. package/dist/app/services/prism-persistence.service.js +9 -11
  207. package/dist/app/services/prism-plugin.service.d.ts.map +1 -1
  208. package/dist/app/services/prism-renderer.service.d.ts.map +1 -1
  209. package/dist/app/services/prism-renderer.service.js +5 -9
  210. package/dist/app/services/prism-search.service.d.ts.map +1 -1
  211. package/dist/app/services/prism-search.service.js +1 -2
  212. package/dist/app/services/prism-theme.service.d.ts.map +1 -1
  213. package/dist/app/services/prism-theme.service.js +6 -4
  214. package/dist/app/services/prism-url-state.service.d.ts.map +1 -1
  215. package/dist/app/services/prism-url-state.service.js +4 -10
  216. package/dist/app/services/prism-variant-bg.service.d.ts +10 -24
  217. package/dist/app/services/prism-variant-bg.service.d.ts.map +1 -1
  218. package/dist/app/services/prism-variant-bg.service.js +13 -29
  219. package/dist/app/shared/prism-metric-badge.component.d.ts +9 -15
  220. package/dist/app/shared/prism-metric-badge.component.d.ts.map +1 -1
  221. package/dist/app/shared/prism-metric-badge.component.js +13 -32
  222. package/dist/app/shell/prism-shell.component.d.ts.map +1 -1
  223. package/dist/app/shell/prism-shell.component.js +26 -125
  224. package/dist/app/sidebar/navigation-decorations.d.ts +4 -4
  225. package/dist/app/sidebar/navigation-decorations.d.ts.map +1 -1
  226. package/dist/app/sidebar/navigation-decorations.js +3 -3
  227. package/dist/app/sidebar/prism-sidebar.component.d.ts +3 -3
  228. package/dist/app/sidebar/prism-sidebar.component.d.ts.map +1 -1
  229. package/dist/app/sidebar/prism-sidebar.component.js +21 -156
  230. package/dist/app/theme/prism-default-theme.d.ts.map +1 -1
  231. package/dist/app/theme/prism-default-theme.js +6 -6
  232. package/dist/app/tokens/prism-tokens.d.ts.map +1 -1
  233. package/dist/app/tokens/prism-tokens.js +1 -1
  234. package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts.map +1 -1
  235. package/dist/app/variant-ribbon/prism-variant-ribbon.component.js +4 -49
  236. package/dist/app/variant-ribbon/spectrum.d.ts +1 -1
  237. package/dist/app/variant-ribbon/spectrum.d.ts.map +1 -1
  238. package/dist/app/variant-ribbon/spectrum.js +1 -1
  239. package/dist/app/view-tab-bar/next-view-id.d.ts +1 -1
  240. package/dist/app/view-tab-bar/next-view-id.d.ts.map +1 -1
  241. package/dist/app/view-tab-bar/next-view-id.js +2 -4
  242. package/dist/app/view-tab-bar/prism-view-panel-host.component.d.ts.map +1 -1
  243. package/dist/app/view-tab-bar/prism-view-panel-host.component.js +5 -17
  244. package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts.map +1 -1
  245. package/dist/app/view-tab-bar/prism-view-tab-bar.component.js +4 -27
  246. package/dist/builder/a11y/a11y-report-reader.d.ts +2 -2
  247. package/dist/builder/a11y/a11y-report-reader.d.ts.map +1 -1
  248. package/dist/builder/a11y/a11y-report-reader.js +8 -8
  249. package/dist/builder/build/index.d.ts.map +1 -1
  250. package/dist/builder/build/index.js +5 -9
  251. package/dist/builder/build/schema.d.ts.map +1 -1
  252. package/dist/builder/config-loader/config-loader.d.ts.map +1 -1
  253. package/dist/builder/config-loader/config-loader.js +4 -5
  254. package/dist/builder/manifest/host-parser.d.ts.map +1 -1
  255. package/dist/builder/manifest/host-parser.js +1 -1
  256. package/dist/builder/manifest/runtime-manifest.generator.d.ts +1 -1
  257. package/dist/builder/manifest/runtime-manifest.generator.d.ts.map +1 -1
  258. package/dist/builder/manifest/runtime-manifest.generator.js +14 -35
  259. package/dist/builder/plugin-runner/plugin-runner.d.ts.map +1 -1
  260. package/dist/builder/plugin-runner/plugin-runner.js +2 -4
  261. package/dist/builder/scanner/ast-utils.d.ts +46 -2
  262. package/dist/builder/scanner/ast-utils.d.ts.map +1 -1
  263. package/dist/builder/scanner/ast-utils.js +338 -38
  264. package/dist/builder/scanner/class-hierarchy.d.ts +33 -0
  265. package/dist/builder/scanner/class-hierarchy.d.ts.map +1 -0
  266. package/dist/builder/scanner/class-hierarchy.js +87 -0
  267. package/dist/builder/scanner/component.scanner.d.ts +7 -1
  268. package/dist/builder/scanner/component.scanner.d.ts.map +1 -1
  269. package/dist/builder/scanner/component.scanner.js +113 -72
  270. package/dist/builder/scanner/entry-point-discovery.d.ts.map +1 -1
  271. package/dist/builder/scanner/entry-point-discovery.js +3 -5
  272. package/dist/builder/scanner/entry-point.scanner.d.ts.map +1 -1
  273. package/dist/builder/scanner/entry-point.scanner.js +1 -3
  274. package/dist/builder/scanner/index.d.ts +1 -1
  275. package/dist/builder/scanner/index.d.ts.map +1 -1
  276. package/dist/builder/scanner/input.extractor.d.ts +7 -4
  277. package/dist/builder/scanner/input.extractor.d.ts.map +1 -1
  278. package/dist/builder/scanner/input.extractor.js +157 -76
  279. package/dist/builder/scanner/manifest.generator.d.ts.map +1 -1
  280. package/dist/builder/scanner/manifest.generator.js +8 -6
  281. package/dist/builder/scanner/scanner.d.ts +3 -1
  282. package/dist/builder/scanner/scanner.d.ts.map +1 -1
  283. package/dist/builder/scanner/scanner.js +10 -8
  284. package/dist/builder/scanner/showcase-diagnostics.d.ts +25 -0
  285. package/dist/builder/scanner/showcase-diagnostics.d.ts.map +1 -0
  286. package/dist/builder/scanner/showcase-diagnostics.js +96 -0
  287. package/dist/builder/serve/index.d.ts.map +1 -1
  288. package/dist/builder/serve/index.js +8 -10
  289. package/dist/builder/serve/schema.d.ts.map +1 -1
  290. package/dist/builder/shared/index.d.ts +1 -1
  291. package/dist/builder/shared/index.d.ts.map +1 -1
  292. package/dist/builder/shared/index.js +1 -1
  293. package/dist/builder/shared/prism-pipeline.d.ts +1 -1
  294. package/dist/builder/shared/prism-pipeline.d.ts.map +1 -1
  295. package/dist/builder/shared/prism-pipeline.js +29 -38
  296. package/dist/builder/shared/resolve-cache-dir.d.ts.map +1 -1
  297. package/dist/builder/shared/resolve-cache-dir.js +1 -1
  298. package/dist/builder/watcher/index.d.ts +1 -1
  299. package/dist/builder/watcher/index.d.ts.map +1 -1
  300. package/dist/builder/watcher/prism-watcher.d.ts.map +1 -1
  301. package/dist/builder/watcher/prism-watcher.js +14 -12
  302. package/dist/config/index.d.ts +2 -2
  303. package/dist/config/index.d.ts.map +1 -1
  304. package/dist/config/index.js +1 -1
  305. package/dist/decorator/index.d.ts +1 -1
  306. package/dist/decorator/index.d.ts.map +1 -1
  307. package/dist/decorator/showcase.decorator.d.ts.map +1 -1
  308. package/dist/decorator/showcase.types.d.ts +11 -9
  309. package/dist/decorator/showcase.types.d.ts.map +1 -1
  310. package/dist/index.js +3 -3
  311. package/dist/plugin/define-config.js +1 -1
  312. package/dist/plugin/index.d.ts +4 -4
  313. package/dist/plugin/index.d.ts.map +1 -1
  314. package/dist/plugin/index.js +7 -11
  315. package/dist/plugin/page-helpers.d.ts +1 -1
  316. package/dist/plugin/page-helpers.d.ts.map +1 -1
  317. package/dist/plugin/page-helpers.js +2 -2
  318. package/dist/plugin/page.types.d.ts.map +1 -1
  319. package/dist/plugin/plugin.types.d.ts +31 -14
  320. package/dist/plugin/plugin.types.d.ts.map +1 -1
  321. package/dist/schematics/migrations/v21-13-manifest-cache/index.d.ts.map +1 -1
  322. package/dist/schematics/migrations/v21-13-manifest-cache/index.js +4 -10
  323. package/dist/schematics/migrations/v22-0-cache-dir-rename/index.d.ts.map +1 -1
  324. package/dist/schematics/migrations/v22-0-cache-dir-rename/index.js +6 -10
  325. package/dist/schematics/ng-add/index.d.ts.map +1 -1
  326. package/dist/schematics/ng-add/index.js +122 -56
  327. package/dist/schematics/ng-add/schema.d.ts.map +1 -1
  328. package/dist/schematics/utils/config-ast.d.ts.map +1 -1
  329. package/dist/schematics/utils/config-ast.js +8 -15
  330. package/dist/schematics/utils/tsconfig-paths.d.ts.map +1 -1
  331. package/dist/schematics/utils/tsconfig-paths.js +1 -1
  332. package/dist/shared/canvas-bg.type.d.ts +5 -6
  333. package/dist/shared/canvas-bg.type.d.ts.map +1 -1
  334. package/dist/shared/canvas-bg.type.js +5 -13
  335. package/dist/shared/canvas-layout.type.d.ts.map +1 -1
  336. package/dist/shared/canvas-layout.type.js +1 -4
  337. package/dist/shared/measure.type.d.ts +52 -0
  338. package/dist/shared/measure.type.d.ts.map +1 -0
  339. package/dist/shared/measure.type.js +21 -0
  340. package/dist/shared/variant-bg.d.ts +20 -31
  341. package/dist/shared/variant-bg.d.ts.map +1 -1
  342. package/dist/shared/variant-bg.js +20 -31
  343. package/dist/shared/viewport.type.d.ts +43 -0
  344. package/dist/shared/viewport.type.d.ts.map +1 -0
  345. package/dist/shared/viewport.type.js +44 -0
  346. package/dist/transformer/cli.js +0 -0
  347. package/dist/transformer/index.d.ts +2 -2
  348. package/dist/transformer/index.d.ts.map +1 -1
  349. package/dist/transformer/index.js +2 -2
  350. package/dist/transformer/showcase-strip.transformer.d.ts.map +1 -1
  351. package/dist/transformer/showcase-strip.transformer.js +7 -16
  352. package/dist/transformer/strip-directory.d.ts.map +1 -1
  353. package/dist/transformer/strip-directory.js +2 -4
  354. package/package.json +5 -2
  355. package/schematics/collection.json +7 -7
  356. package/schematics/migrations.json +12 -12
  357. package/schematics/ng-add/schema.json +22 -22
  358. package/src/builder/build/schema.json +36 -36
  359. package/src/builder/serve/schema.json +37 -37
@@ -1,4 +1,4 @@
1
- import { Component, ChangeDetectionStrategy, computed, input, output, signal, viewChild, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, computed, input, output, signal, viewChild } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  const _c0 = ["textareaEl"];
4
4
  const _c1 = ["preEl"];
@@ -101,30 +101,10 @@ export class JsonControlComponent {
101
101
  i0.ɵɵdomProperty("value", ctx.displayText());
102
102
  i0.ɵɵadvance(2);
103
103
  i0.ɵɵconditional(ctx.parseError() ? 7 : -1);
104
- } }, styles: [".json-editor[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n\n .json-overlay[_ngcontent-%COMP%] {\n position: relative;\n border: 1px solid var(--%NS%prism-border);\n border-radius: var(--%NS%radius-sm);\n overflow: hidden;\n transition: border-color var(--%NS%dur-fast);\n }\n .json-overlay[_ngcontent-%COMP%]:focus-within {\n border-color: var(--%NS%prism-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--%NS%prism-primary) 30%, transparent);\n }\n\n .json-pre[_ngcontent-%COMP%], .json-input[_ngcontent-%COMP%] {\n margin: 0;\n padding: 4px 8px;\n font-family: var(--%NS%font-mono);\n font-size: 12px;\n line-height: 1.4;\n white-space: pre-wrap;\n word-wrap: break-word;\n tab-size: 2;\n }\n\n .json-pre[_ngcontent-%COMP%] {\n min-height: 56px;\n pointer-events: none;\n }\n .json-pre[_ngcontent-%COMP%] code[_ngcontent-%COMP%] { font-family: inherit; }\n\n [_nghost-%COMP%] .jh-key { color: var(--%NS%prism-code-attr); }\n [_nghost-%COMP%] .jh-string { color: var(--%NS%prism-code-str); }\n [_nghost-%COMP%] .jh-number { color: var(--%NS%prism-warn); }\n [_nghost-%COMP%] .jh-bool { color: var(--%NS%prism-primary); }\n [_nghost-%COMP%] .jh-null { color: var(--%NS%prism-text-ghost); }\n\n .json-input[_ngcontent-%COMP%] {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n background: transparent;\n color: transparent;\n caret-color: var(--%NS%prism-text);\n border: none;\n resize: none;\n overflow: auto;\n box-sizing: border-box;\n }\n .json-input[_ngcontent-%COMP%]:focus { outline: none; }\n .json-input[_ngcontent-%COMP%]::selection { background: rgba(99, 102, 241, 0.3); }\n\n .json-error[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--%NS%prism-danger);\n display: block;\n margin-top: 2px;\n }"] });
104
+ } }, styles: [".json-editor[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.json-overlay[_ngcontent-%COMP%] {\n position: relative;\n overflow: hidden;\n border: 1px solid var(--%NS%prism-border);\n border-radius: var(--%NS%radius-sm);\n transition: border-color var(--%NS%dur-fast);\n}\n\n.json-overlay[_ngcontent-%COMP%]:focus-within {\n border-color: var(--%NS%prism-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--%NS%prism-primary) 30%, transparent);\n}\n\n.json-pre[_ngcontent-%COMP%], \n.json-input[_ngcontent-%COMP%] {\n padding: 4px 8px;\n margin: 0;\n font-family: var(--%NS%font-mono);\n font-size: 12px;\n line-height: 1.4;\n overflow-wrap: break-word;\n tab-size: 2;\n white-space: pre-wrap;\n}\n\n.json-pre[_ngcontent-%COMP%] {\n min-height: 56px;\n pointer-events: none;\n}\n\n.json-pre[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n font-family: inherit;\n}\n\n[_nghost-%COMP%] .jh-key {\n color: var(--%NS%prism-code-attr);\n}\n\n[_nghost-%COMP%] .jh-string {\n color: var(--%NS%prism-code-str);\n}\n\n[_nghost-%COMP%] .jh-number {\n color: var(--%NS%prism-warn);\n}\n\n[_nghost-%COMP%] .jh-bool {\n color: var(--%NS%prism-primary);\n}\n\n[_nghost-%COMP%] .jh-null {\n color: var(--%NS%prism-text-ghost);\n}\n\n.json-input[_ngcontent-%COMP%] {\n position: absolute;\n inset: 0;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n overflow: auto;\n color: transparent;\n caret-color: var(--%NS%prism-text);\n resize: none;\n background: transparent;\n border: none;\n}\n\n.json-input[_ngcontent-%COMP%]:focus {\n outline: none;\n}\n\n.json-input[_ngcontent-%COMP%]::selection {\n background: rgb(99 102 241 / 30%);\n}\n\n.json-error[_ngcontent-%COMP%] {\n display: block;\n margin-top: 2px;\n font-size: 11px;\n color: var(--%NS%prism-danger);\n}"] });
105
105
  }
106
106
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(JsonControlComponent, [{
107
107
  type: Component,
108
- args: [{ selector: 'prism-json-control', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
109
- <div class="json-editor">
110
- <div class="json-overlay">
111
- <pre
112
- class="json-pre"
113
- #preEl
114
- ><code [innerHTML]="highlightedHtml()"></code></pre>
115
- <textarea
116
- #textareaEl
117
- class="json-input"
118
- [value]="displayText()"
119
- (input)="onInput($any($event.target).value)"
120
- (scroll)="syncScroll()"
121
- spellcheck="false"
122
- ></textarea>
123
- </div>
124
- @if (parseError()) {
125
- <span class="json-error">Invalid JSON</span>
126
- }
127
- </div>
128
- `, styles: ["\n .json-editor { flex: 1; min-width: 0; }\n\n .json-overlay {\n position: relative;\n border: 1px solid var(--prism-border);\n border-radius: var(--radius-sm);\n overflow: hidden;\n transition: border-color var(--dur-fast);\n }\n .json-overlay:focus-within {\n border-color: var(--prism-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--prism-primary) 30%, transparent);\n }\n\n .json-pre, .json-input {\n margin: 0;\n padding: 4px 8px;\n font-family: var(--font-mono);\n font-size: 12px;\n line-height: 1.4;\n white-space: pre-wrap;\n word-wrap: break-word;\n tab-size: 2;\n }\n\n .json-pre {\n min-height: 56px;\n pointer-events: none;\n }\n .json-pre code { font-family: inherit; }\n\n :host ::ng-deep .jh-key { color: var(--prism-code-attr); }\n :host ::ng-deep .jh-string { color: var(--prism-code-str); }\n :host ::ng-deep .jh-number { color: var(--prism-warn); }\n :host ::ng-deep .jh-bool { color: var(--prism-primary); }\n :host ::ng-deep .jh-null { color: var(--prism-text-ghost); }\n\n .json-input {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n background: transparent;\n color: transparent;\n caret-color: var(--prism-text);\n border: none;\n resize: none;\n overflow: auto;\n box-sizing: border-box;\n }\n .json-input:focus { outline: none; }\n .json-input::selection { background: rgba(99, 102, 241, 0.3); }\n\n .json-error {\n font-size: 11px;\n color: var(--prism-danger);\n display: block;\n margin-top: 2px;\n }\n "] }]
108
+ args: [{ selector: 'prism-json-control', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"json-editor\">\n <div class=\"json-overlay\">\n <pre\n class=\"json-pre\"\n #preEl><code [innerHTML]=\"highlightedHtml()\"></code></pre>\n <textarea\n #textareaEl\n class=\"json-input\"\n [value]=\"displayText()\"\n (input)=\"onInput($any($event.target).value)\"\n (scroll)=\"syncScroll()\"\n spellcheck=\"false\"></textarea>\n </div>\n @if (parseError()) {\n <span class=\"json-error\">Invalid JSON</span>\n }\n</div>\n", styles: [".json-editor {\n flex: 1;\n min-width: 0;\n}\n\n.json-overlay {\n position: relative;\n overflow: hidden;\n border: 1px solid var(--prism-border);\n border-radius: var(--radius-sm);\n transition: border-color var(--dur-fast);\n}\n\n.json-overlay:focus-within {\n border-color: var(--prism-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--prism-primary) 30%, transparent);\n}\n\n.json-pre,\n.json-input {\n padding: 4px 8px;\n margin: 0;\n font-family: var(--font-mono);\n font-size: 12px;\n line-height: 1.4;\n overflow-wrap: break-word;\n tab-size: 2;\n white-space: pre-wrap;\n}\n\n.json-pre {\n min-height: 56px;\n pointer-events: none;\n}\n\n.json-pre code {\n font-family: inherit;\n}\n\n:host ::ng-deep .jh-key {\n color: var(--prism-code-attr);\n}\n\n:host ::ng-deep .jh-string {\n color: var(--prism-code-str);\n}\n\n:host ::ng-deep .jh-number {\n color: var(--prism-warn);\n}\n\n:host ::ng-deep .jh-bool {\n color: var(--prism-primary);\n}\n\n:host ::ng-deep .jh-null {\n color: var(--prism-text-ghost);\n}\n\n.json-input {\n position: absolute;\n inset: 0;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n overflow: auto;\n color: transparent;\n caret-color: var(--prism-text);\n resize: none;\n background: transparent;\n border: none;\n}\n\n.json-input:focus {\n outline: none;\n}\n\n.json-input::selection {\n background: rgb(99 102 241 / 30%);\n}\n\n.json-error {\n display: block;\n margin-top: 2px;\n font-size: 11px;\n color: var(--prism-danger);\n}\n"] }]
129
109
  }], null, { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], typeName: [{ type: i0.Input, args: [{ isSignal: true, alias: "typeName", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], textareaEl: [{ type: i0.ViewChild, args: ['textareaEl', { isSignal: true }] }], preEl: [{ type: i0.ViewChild, args: ['preEl', { isSignal: true }] }] }); })();
130
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(JsonControlComponent, { className: "JsonControlComponent", filePath: "app/controls/json-control.component.ts", lineNumber: 126 }); })();
110
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(JsonControlComponent, { className: "JsonControlComponent", filePath: "app/controls/json-control.component.ts", lineNumber: 38 }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"number-control.component.d.ts","sourceRoot":"","sources":["../../../src/app/controls/number-control.component.ts"],"names":[],"mappings":";AAOA,qBAiCa,sBAAsB;IACjC,QAAQ,CAAC,KAAK,8CAAY;IAC1B,QAAQ,CAAC,KAAK,8CAAa;IAC3B,QAAQ,CAAC,QAAQ,8CAAa;IAC9B,QAAQ,CAAC,WAAW,mDAAoB;yCAJ7B,sBAAsB;2CAAtB,sBAAsB;CAKlC"}
1
+ {"version":3,"file":"number-control.component.d.ts","sourceRoot":"","sources":["../../../src/app/controls/number-control.component.ts"],"names":[],"mappings":";AAEA,qBAOa,sBAAsB;IAC/B,QAAQ,CAAC,KAAK,8CAAY;IAC1B,QAAQ,CAAC,KAAK,8CAAa;IAC3B,QAAQ,CAAC,QAAQ,8CAAa;IAC9B,QAAQ,CAAC,WAAW,mDAAoB;yCAJ/B,sBAAsB;2CAAtB,sBAAsB;CAKlC"}
@@ -1,4 +1,4 @@
1
- import { Component, ChangeDetectionStrategy, input, output, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class NumberControlComponent {
4
4
  value = input(0, /* @ts-ignore */
@@ -15,17 +15,10 @@ export class NumberControlComponent {
15
15
  i0.ɵɵdomElementEnd();
16
16
  } if (rf & 2) {
17
17
  i0.ɵɵdomProperty("value", ctx.value());
18
- } }, styles: [".ctl-number[_ngcontent-%COMP%] {\n height: 30px;\n padding: 0 10px;\n background: var(--%NS%prism-input-bg);\n border: 1px solid var(--%NS%prism-border);\n border-radius: var(--%NS%radius-sm);\n color: var(--%NS%prism-text);\n font-size: 13px;\n font-family: var(--%NS%font-sans);\n flex: 1;\n min-width: 0;\n outline: none;\n transition: border-color var(--%NS%dur-fast), box-shadow var(--%NS%dur-fast);\n }\n .ctl-number[_ngcontent-%COMP%]:focus {\n border-color: var(--%NS%prism-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--%NS%prism-primary) 30%, transparent);\n }"] });
18
+ } }, styles: [".ctl-number[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n height: 30px;\n padding: 0 10px;\n font-family: var(--%NS%font-sans);\n font-size: 13px;\n color: var(--%NS%prism-text);\n outline: none;\n background: var(--%NS%prism-input-bg);\n border: 1px solid var(--%NS%prism-border);\n border-radius: var(--%NS%radius-sm);\n transition:\n border-color var(--%NS%dur-fast),\n box-shadow var(--%NS%dur-fast);\n}\n\n.ctl-number[_ngcontent-%COMP%]:focus {\n border-color: var(--%NS%prism-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--%NS%prism-primary) 30%, transparent);\n}"] });
19
19
  }
20
20
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NumberControlComponent, [{
21
21
  type: Component,
22
- args: [{ selector: 'prism-number-control', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
23
- <input
24
- type="number"
25
- class="ctl-number"
26
- [value]="value()"
27
- (input)="valueChange.emit($any($event.target).valueAsNumber || 0)"
28
- />
29
- `, styles: ["\n .ctl-number {\n height: 30px;\n padding: 0 10px;\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n border-radius: var(--radius-sm);\n color: var(--prism-text);\n font-size: 13px;\n font-family: var(--font-sans);\n flex: 1;\n min-width: 0;\n outline: none;\n transition: border-color var(--dur-fast), box-shadow var(--dur-fast);\n }\n .ctl-number:focus {\n border-color: var(--prism-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--prism-primary) 30%, transparent);\n }\n "] }]
22
+ args: [{ selector: 'prism-number-control', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<input\n type=\"number\"\n class=\"ctl-number\"\n [value]=\"value()\"\n (input)=\"valueChange.emit($any($event.target).valueAsNumber || 0)\" />\n", styles: [".ctl-number {\n flex: 1;\n min-width: 0;\n height: 30px;\n padding: 0 10px;\n font-family: var(--font-sans);\n font-size: 13px;\n color: var(--prism-text);\n outline: none;\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n border-radius: var(--radius-sm);\n transition:\n border-color var(--dur-fast),\n box-shadow var(--dur-fast);\n}\n\n.ctl-number:focus {\n border-color: var(--prism-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--prism-primary) 30%, transparent);\n}\n"] }]
30
23
  }], null, { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], typeName: [{ type: i0.Input, args: [{ isSignal: true, alias: "typeName", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] }); })();
31
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NumberControlComponent, { className: "NumberControlComponent", filePath: "app/controls/number-control.component.ts", lineNumber: 41 }); })();
24
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NumberControlComponent, { className: "NumberControlComponent", filePath: "app/controls/number-control.component.ts", lineNumber: 10 }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"string-control.component.d.ts","sourceRoot":"","sources":["../../../src/app/controls/string-control.component.ts"],"names":[],"mappings":";AAOA,qBAiCa,sBAAsB;IACjC,QAAQ,CAAC,KAAK,8CAAa;IAC3B,QAAQ,CAAC,KAAK,8CAAa;IAC3B,QAAQ,CAAC,QAAQ,8CAAa;IAC9B,QAAQ,CAAC,WAAW,mDAAoB;yCAJ7B,sBAAsB;2CAAtB,sBAAsB;CAKlC"}
1
+ {"version":3,"file":"string-control.component.d.ts","sourceRoot":"","sources":["../../../src/app/controls/string-control.component.ts"],"names":[],"mappings":";AAEA,qBAOa,sBAAsB;IAC/B,QAAQ,CAAC,KAAK,8CAAa;IAC3B,QAAQ,CAAC,KAAK,8CAAa;IAC3B,QAAQ,CAAC,QAAQ,8CAAa;IAC9B,QAAQ,CAAC,WAAW,mDAAoB;yCAJ/B,sBAAsB;2CAAtB,sBAAsB;CAKlC"}
@@ -1,4 +1,4 @@
1
- import { Component, ChangeDetectionStrategy, input, output, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class StringControlComponent {
4
4
  value = input('', /* @ts-ignore */
@@ -15,17 +15,10 @@ export class StringControlComponent {
15
15
  i0.ɵɵdomElementEnd();
16
16
  } if (rf & 2) {
17
17
  i0.ɵɵdomProperty("value", ctx.value());
18
- } }, styles: [".ctl-text[_ngcontent-%COMP%] {\n height: 30px;\n padding: 0 10px;\n background: var(--%NS%prism-input-bg);\n border: 1px solid var(--%NS%prism-border);\n border-radius: var(--%NS%radius-sm);\n color: var(--%NS%prism-text);\n font-size: 13px;\n font-family: var(--%NS%font-sans);\n flex: 1;\n min-width: 0;\n outline: none;\n transition: border-color var(--%NS%dur-fast), box-shadow var(--%NS%dur-fast);\n }\n .ctl-text[_ngcontent-%COMP%]:focus {\n border-color: var(--%NS%prism-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--%NS%prism-primary) 30%, transparent);\n }"] });
18
+ } }, styles: [".ctl-text[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n height: 30px;\n padding: 0 10px;\n font-family: var(--%NS%font-sans);\n font-size: 13px;\n color: var(--%NS%prism-text);\n outline: none;\n background: var(--%NS%prism-input-bg);\n border: 1px solid var(--%NS%prism-border);\n border-radius: var(--%NS%radius-sm);\n transition:\n border-color var(--%NS%dur-fast),\n box-shadow var(--%NS%dur-fast);\n}\n\n.ctl-text[_ngcontent-%COMP%]:focus {\n border-color: var(--%NS%prism-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--%NS%prism-primary) 30%, transparent);\n}"] });
19
19
  }
20
20
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(StringControlComponent, [{
21
21
  type: Component,
22
- args: [{ selector: 'prism-string-control', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
23
- <input
24
- type="text"
25
- class="ctl-text"
26
- [value]="value()"
27
- (input)="valueChange.emit($any($event.target).value)"
28
- />
29
- `, styles: ["\n .ctl-text {\n height: 30px;\n padding: 0 10px;\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n border-radius: var(--radius-sm);\n color: var(--prism-text);\n font-size: 13px;\n font-family: var(--font-sans);\n flex: 1;\n min-width: 0;\n outline: none;\n transition: border-color var(--dur-fast), box-shadow var(--dur-fast);\n }\n .ctl-text:focus {\n border-color: var(--prism-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--prism-primary) 30%, transparent);\n }\n "] }]
22
+ args: [{ selector: 'prism-string-control', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<input\n type=\"text\"\n class=\"ctl-text\"\n [value]=\"value()\"\n (input)=\"valueChange.emit($any($event.target).value)\" />\n", styles: [".ctl-text {\n flex: 1;\n min-width: 0;\n height: 30px;\n padding: 0 10px;\n font-family: var(--font-sans);\n font-size: 13px;\n color: var(--prism-text);\n outline: none;\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n border-radius: var(--radius-sm);\n transition:\n border-color var(--dur-fast),\n box-shadow var(--dur-fast);\n}\n\n.ctl-text:focus {\n border-color: var(--prism-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--prism-primary) 30%, transparent);\n}\n"] }]
30
23
  }], null, { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], typeName: [{ type: i0.Input, args: [{ isSignal: true, alias: "typeName", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] }); })();
31
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(StringControlComponent, { className: "StringControlComponent", filePath: "app/controls/string-control.component.ts", lineNumber: 41 }); })();
24
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(StringControlComponent, { className: "StringControlComponent", filePath: "app/controls/string-control.component.ts", lineNumber: 10 }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"union-control.component.d.ts","sourceRoot":"","sources":["../../../src/app/controls/union-control.component.ts"],"names":[],"mappings":";AAOA,qBAgDa,qBAAqB;IAChC,QAAQ,CAAC,KAAK,8CAAa;IAC3B,QAAQ,CAAC,KAAK,8CAAa;IAC3B,QAAQ,CAAC,QAAQ,8CAAa;IAC9B,QAAQ,CAAC,OAAO,gDAAuB;IACvC,QAAQ,CAAC,WAAW,mDAAoB;yCAL7B,qBAAqB;2CAArB,qBAAqB;CAMjC"}
1
+ {"version":3,"file":"union-control.component.d.ts","sourceRoot":"","sources":["../../../src/app/controls/union-control.component.ts"],"names":[],"mappings":";AAEA,qBAOa,qBAAqB;IAC9B,QAAQ,CAAC,KAAK,8CAAa;IAC3B,QAAQ,CAAC,KAAK,8CAAa;IAC3B,QAAQ,CAAC,QAAQ,8CAAa;IAC9B,QAAQ,CAAC,OAAO,gDAAuB;IACvC,QAAQ,CAAC,WAAW,mDAAoB;yCAL/B,qBAAqB;2CAArB,qBAAqB;CAMjC"}
@@ -1,4 +1,4 @@
1
- import { Component, ChangeDetectionStrategy, input, output, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  function UnionControlComponent_For_2_Template(rf, ctx) { if (rf & 1) {
4
4
  const _r1 = i0.ɵɵgetCurrentView();
@@ -31,22 +31,10 @@ export class UnionControlComponent {
31
31
  } if (rf & 2) {
32
32
  i0.ɵɵadvance();
33
33
  i0.ɵɵrepeater(ctx.options());
34
- } }, styles: [".ctl-pills[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n flex-wrap: wrap;\n }\n .ctl-pill[_ngcontent-%COMP%] {\n height: 26px;\n padding: 0 10px;\n font-size: var(--%NS%fs-sm);\n font-weight: 500;\n border: 1px solid var(--%NS%prism-border);\n border-radius: 4px;\n color: var(--%NS%prism-text-muted);\n background: transparent;\n cursor: pointer;\n transition: all var(--%NS%dur-fast);\n font-family: var(--%NS%font-sans);\n }\n .ctl-pill[_ngcontent-%COMP%]:hover {\n color: var(--%NS%prism-text);\n border-color: var(--%NS%prism-border-strong);\n }\n .ctl-pill--active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--%NS%prism-primary) 15%, transparent);\n color: var(--%NS%prism-primary);\n border-color: color-mix(in srgb, var(--%NS%prism-primary) 40%, transparent);\n font-weight: 600;\n }"] });
34
+ } }, styles: [".ctl-pills[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.ctl-pill[_ngcontent-%COMP%] {\n height: 26px;\n padding: 0 10px;\n font-family: var(--%NS%font-sans);\n font-size: var(--%NS%fs-sm);\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: 4px;\n transition: all var(--%NS%dur-fast);\n}\n\n.ctl-pill[_ngcontent-%COMP%]:hover {\n color: var(--%NS%prism-text);\n border-color: var(--%NS%prism-border-strong);\n}\n\n.ctl-pill--active[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--%NS%prism-primary);\n background: color-mix(in srgb, var(--%NS%prism-primary) 15%, transparent);\n border-color: color-mix(in srgb, var(--%NS%prism-primary) 40%, transparent);\n}"] });
35
35
  }
36
36
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UnionControlComponent, [{
37
37
  type: Component,
38
- args: [{ selector: 'prism-union-control', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
39
- <div class="ctl-pills" role="group">
40
- @for (option of options(); track option) {
41
- <button
42
- class="ctl-pill"
43
- [class.ctl-pill--active]="option === value()"
44
- (click)="valueChange.emit(option)"
45
- >
46
- {{ option }}
47
- </button>
48
- }
49
- </div>
50
- `, styles: ["\n .ctl-pills {\n display: flex;\n gap: 4px;\n flex-wrap: wrap;\n }\n .ctl-pill {\n height: 26px;\n padding: 0 10px;\n font-size: var(--fs-sm);\n font-weight: 500;\n border: 1px solid var(--prism-border);\n border-radius: 4px;\n color: var(--prism-text-muted);\n background: transparent;\n cursor: pointer;\n transition: all var(--dur-fast);\n font-family: var(--font-sans);\n }\n .ctl-pill:hover {\n color: var(--prism-text);\n border-color: var(--prism-border-strong);\n }\n .ctl-pill--active {\n background: color-mix(in srgb, var(--prism-primary) 15%, transparent);\n color: var(--prism-primary);\n border-color: color-mix(in srgb, var(--prism-primary) 40%, transparent);\n font-weight: 600;\n }\n "] }]
38
+ args: [{ selector: 'prism-union-control', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"ctl-pills\"\n role=\"group\">\n @for (option of options(); track option) {\n <button\n class=\"ctl-pill\"\n [class.ctl-pill--active]=\"option === value()\"\n (click)=\"valueChange.emit(option)\">\n {{ option }}\n </button>\n }\n</div>\n", styles: [".ctl-pills {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.ctl-pill {\n height: 26px;\n padding: 0 10px;\n font-family: var(--font-sans);\n font-size: var(--fs-sm);\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: 4px;\n transition: all var(--dur-fast);\n}\n\n.ctl-pill:hover {\n color: var(--prism-text);\n border-color: var(--prism-border-strong);\n}\n\n.ctl-pill--active {\n font-weight: 600;\n color: var(--prism-primary);\n background: color-mix(in srgb, var(--prism-primary) 15%, transparent);\n border-color: color-mix(in srgb, var(--prism-primary) 40%, transparent);\n}\n"] }]
51
39
  }], null, { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], typeName: [{ type: i0.Input, args: [{ isSignal: true, alias: "typeName", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] }); })();
52
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UnionControlComponent, { className: "UnionControlComponent", filePath: "app/controls/union-control.component.ts", lineNumber: 56 }); })();
40
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UnionControlComponent, { className: "UnionControlComponent", filePath: "app/controls/union-control.component.ts", lineNumber: 10 }); })();
@@ -4,11 +4,34 @@ export declare class PrismResizerDirective {
4
4
  readonly min: import("@angular/core").InputSignal<number>;
5
5
  readonly max: import("@angular/core").InputSignal<number>;
6
6
  readonly value: import("@angular/core").InputSignal<number>;
7
+ /**
8
+ * Pointer travel to value, as a multiplier.
9
+ *
10
+ * `1` (the default) is a panel or sidebar edge. The viewport grips pass
11
+ * `2 / zoom` and `-2 / zoom`: their box is centred, so holding one edge
12
+ * changes the width at both (the `2`), and the stage scales that box by
13
+ * `--zoom`, so the multiplier has to divide it back out to keep the grip
14
+ * under the cursor. Existing call sites do not pass it and are unaffected.
15
+ */
16
+ readonly scale: import("@angular/core").InputSignal<number>;
7
17
  readonly valueChange: import("@angular/core").OutputEmitterRef<number>;
8
18
  private readonly el;
19
+ /** How far one arrow key moves the value. */
20
+ private static readonly STEP;
9
21
  protected onMouseDown(e: MouseEvent): void;
22
+ /**
23
+ * Keyboard direction is independent of `scale`.
24
+ *
25
+ * `scale` inverts the *pointer* for a grip on the far edge of a centred box,
26
+ * and carrying that inversion into the keyboard was wrong: two separators
27
+ * that expose the same `aria-valuenow` answered the same key in opposite
28
+ * directions, so a screen-reader user heard the announced value travel one
29
+ * way on one edge and the other way on the other. WAI-ARIA's window-splitter
30
+ * pattern has ArrowRight and ArrowUp increase the value, whichever edge the
31
+ * separator sits on, and the value here is the width rather than a position.
32
+ */
10
33
  protected onKeyDown(e: KeyboardEvent): void;
11
34
  static ɵfac: i0.ɵɵFactoryDeclaration<PrismResizerDirective, never>;
12
- static ɵdir: i0.ɵɵDirectiveDeclaration<PrismResizerDirective, "[prismResizer]", never, { "axis": { "alias": "axis"; "required": true; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
35
+ static ɵdir: i0.ɵɵDirectiveDeclaration<PrismResizerDirective, "[prismResizer]", never, { "axis": { "alias": "axis"; "required": true; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "scale": { "alias": "scale"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
13
36
  }
14
37
  //# sourceMappingURL=prism-resizer.directive.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prism-resizer.directive.d.ts","sourceRoot":"","sources":["../../../src/app/directives/prism-resizer.directive.ts"],"names":[],"mappings":";AAEA,qBAYa,qBAAqB;IAChC,QAAQ,CAAC,IAAI,iDAA+B;IAC5C,QAAQ,CAAC,GAAG,8CAAc;IAC1B,QAAQ,CAAC,GAAG,8CAAc;IAC1B,QAAQ,CAAC,KAAK,8CAAY;IAC1B,QAAQ,CAAC,WAAW,mDAAoB;IAExC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAmC;IAEtD,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;IAwB1C,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;yCAjChC,qBAAqB;2CAArB,qBAAqB;CAmDjC"}
1
+ {"version":3,"file":"prism-resizer.directive.d.ts","sourceRoot":"","sources":["../../../src/app/directives/prism-resizer.directive.ts"],"names":[],"mappings":";AAGA,qBAYa,qBAAqB;IAC9B,QAAQ,CAAC,IAAI,iDAA+B;IAC5C,QAAQ,CAAC,GAAG,8CAAc;IAC1B,QAAQ,CAAC,GAAG,8CAAc;IAC1B,QAAQ,CAAC,KAAK,8CAAY;IAE1B;;;;;;;;OAQG;IACH,QAAQ,CAAC,KAAK,8CAAY;IAE1B,QAAQ,CAAC,WAAW,mDAAoB;IAExC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAmC;IAEtD,6CAA6C;IAC7C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAM;IAElC,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;IA6B1C;;;;;;;;;;OAUG;IACH,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;yCAhElC,qBAAqB;2CAArB,qBAAqB;CAsFjC"}
@@ -1,4 +1,5 @@
1
1
  import { Directive, ElementRef, inject, input, output } from '@angular/core';
2
+ import { resizeValue } from './resize-value.js';
2
3
  import * as i0 from "@angular/core";
3
4
  export class PrismResizerDirective {
4
5
  axis = input.required(/* @ts-ignore */
@@ -9,17 +10,36 @@ export class PrismResizerDirective {
9
10
  ...(ngDevMode ? [{ debugName: "max" }] : /* istanbul ignore next */ []));
10
11
  value = input(0, /* @ts-ignore */
11
12
  ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
13
+ /**
14
+ * Pointer travel to value, as a multiplier.
15
+ *
16
+ * `1` (the default) is a panel or sidebar edge. The viewport grips pass
17
+ * `2 / zoom` and `-2 / zoom`: their box is centred, so holding one edge
18
+ * changes the width at both (the `2`), and the stage scales that box by
19
+ * `--zoom`, so the multiplier has to divide it back out to keep the grip
20
+ * under the cursor. Existing call sites do not pass it and are unaffected.
21
+ */
22
+ scale = input(1, /* @ts-ignore */
23
+ ...(ngDevMode ? [{ debugName: "scale" }] : /* istanbul ignore next */ []));
12
24
  valueChange = output();
13
25
  el = inject((ElementRef));
26
+ /** How far one arrow key moves the value. */
27
+ static STEP = 10;
14
28
  onMouseDown(e) {
29
+ // Primary button only. Without this a right-click arms the document-level
30
+ // listeners below, the context menu takes the pointer so the matching
31
+ // mouseup never arrives, and the drag stays live afterwards, so the value
32
+ // then follows the cursor with no button held. `preventDefault` does not
33
+ // suppress `contextmenu`, so the guard has to be here.
34
+ if (e.button !== 0)
35
+ return;
15
36
  e.preventDefault();
16
37
  const startPos = this.axis() === 'x' ? e.clientX : e.clientY;
17
38
  const startVal = this.value();
18
39
  this.el.nativeElement.classList.add('active');
19
40
  const onMove = (ev) => {
20
41
  const delta = this.axis() === 'x' ? ev.clientX - startPos : startPos - ev.clientY;
21
- const next = Math.max(this.min(), Math.min(this.max(), startVal + delta));
22
- this.valueChange.emit(next);
42
+ this.valueChange.emit(resizeValue(startVal, delta, this.scale(), this.min(), this.max()));
23
43
  };
24
44
  const onUp = () => {
25
45
  this.el.nativeElement.classList.remove('active');
@@ -29,8 +49,19 @@ export class PrismResizerDirective {
29
49
  document.addEventListener('mousemove', onMove);
30
50
  document.addEventListener('mouseup', onUp);
31
51
  }
52
+ /**
53
+ * Keyboard direction is independent of `scale`.
54
+ *
55
+ * `scale` inverts the *pointer* for a grip on the far edge of a centred box,
56
+ * and carrying that inversion into the keyboard was wrong: two separators
57
+ * that expose the same `aria-valuenow` answered the same key in opposite
58
+ * directions, so a screen-reader user heard the announced value travel one
59
+ * way on one edge and the other way on the other. WAI-ARIA's window-splitter
60
+ * pattern has ArrowRight and ArrowUp increase the value, whichever edge the
61
+ * separator sits on, and the value here is the width rather than a position.
62
+ */
32
63
  onKeyDown(e) {
33
- const step = 10;
64
+ const step = PrismResizerDirective.STEP;
34
65
  const current = this.value();
35
66
  let next = null;
36
67
  if (this.axis() === 'x') {
@@ -45,6 +76,12 @@ export class PrismResizerDirective {
45
76
  if (e.key === 'ArrowDown')
46
77
  next = current - step;
47
78
  }
79
+ // Required of a focusable separator by the same pattern, and the only way
80
+ // to reach either end without holding an arrow key down.
81
+ if (e.key === 'Home')
82
+ next = this.min();
83
+ if (e.key === 'End')
84
+ next = this.max();
48
85
  if (next !== null) {
49
86
  e.preventDefault();
50
87
  this.valueChange.emit(Math.max(this.min(), Math.min(this.max(), next)));
@@ -56,7 +93,7 @@ export class PrismResizerDirective {
56
93
  } if (rf & 2) {
57
94
  i0.ɵɵattribute("role", "separator")("aria-orientation", ctx.axis() === "x" ? "vertical" : "horizontal")("tabindex", "0");
58
95
  i0.ɵɵstyleProp("cursor", ctx.axis() === "x" ? "col-resize" : "row-resize");
59
- } }, inputs: { axis: [1, "axis"], min: [1, "min"], max: [1, "max"], value: [1, "value"] }, outputs: { valueChange: "valueChange" } });
96
+ } }, inputs: { axis: [1, "axis"], min: [1, "min"], max: [1, "max"], value: [1, "value"], scale: [1, "scale"] }, outputs: { valueChange: "valueChange" } });
60
97
  }
61
98
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismResizerDirective, [{
62
99
  type: Directive,
@@ -69,7 +106,7 @@ export class PrismResizerDirective {
69
106
  '[attr.aria-orientation]': 'axis() === "x" ? "vertical" : "horizontal"',
70
107
  '(mousedown)': 'onMouseDown($event)',
71
108
  '(keydown)': 'onKeyDown($event)',
72
- '[attr.tabindex]': '"0"',
73
- },
109
+ '[attr.tabindex]': '"0"'
110
+ }
74
111
  }]
75
- }], null, { axis: [{ type: i0.Input, args: [{ isSignal: true, alias: "axis", required: true }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] }); })();
112
+ }], null, { axis: [{ type: i0.Input, args: [{ isSignal: true, alias: "axis", required: true }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], scale: [{ type: i0.Input, args: [{ isSignal: true, alias: "scale", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] }); })();
@@ -0,0 +1,22 @@
1
+ /**
2
+ * The arithmetic behind `prismResizer`, kept out of the directive.
3
+ *
4
+ * Not for tidiness: a directive whose inputs are `input()` signals has to be
5
+ * rendered inside a host component to be exercised, and this package's specs
6
+ * run under jsdom against SWC-compiled sources, where JIT cannot instantiate
7
+ * one. Extracted, the maths is ordinary and testable. It is the same reason
8
+ * `known-inputs.ts` and `overlay-resolver.ts` sit beside their components.
9
+ */
10
+ /**
11
+ * Where a drag lands.
12
+ *
13
+ * `scale` maps pointer movement onto the value. `1` is a panel edge, where a
14
+ * pixel of travel is a pixel of size. The viewport grips pass `2 / zoom` and
15
+ * `-2 / zoom`: the centred box contributes the `2`, since holding one edge
16
+ * changes the width at both, and the stage's `transform: scale(var(--zoom))`
17
+ * contributes the division, since a pointer moving `dx` across the *painted*
18
+ * box has to change the CSS width by `2·dx / zoom` to keep the grip under the
19
+ * cursor. The sign says which edge is being held.
20
+ */
21
+ export declare function resizeValue(startValue: number, delta: number, scale: number, min: number, max: number): number;
22
+ //# sourceMappingURL=resize-value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resize-value.d.ts","sourceRoot":"","sources":["../../../src/app/directives/resize-value.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9G"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * The arithmetic behind `prismResizer`, kept out of the directive.
3
+ *
4
+ * Not for tidiness: a directive whose inputs are `input()` signals has to be
5
+ * rendered inside a host component to be exercised, and this package's specs
6
+ * run under jsdom against SWC-compiled sources, where JIT cannot instantiate
7
+ * one. Extracted, the maths is ordinary and testable. It is the same reason
8
+ * `known-inputs.ts` and `overlay-resolver.ts` sit beside their components.
9
+ */
10
+ /**
11
+ * Where a drag lands.
12
+ *
13
+ * `scale` maps pointer movement onto the value. `1` is a panel edge, where a
14
+ * pixel of travel is a pixel of size. The viewport grips pass `2 / zoom` and
15
+ * `-2 / zoom`: the centred box contributes the `2`, since holding one edge
16
+ * changes the width at both, and the stage's `transform: scale(var(--zoom))`
17
+ * contributes the division, since a pointer moving `dx` across the *painted*
18
+ * box has to change the CSS width by `2·dx / zoom` to keep the grip under the
19
+ * cursor. The sign says which edge is being held.
20
+ */
21
+ export function resizeValue(startValue, delta, scale, min, max) {
22
+ return Math.max(min, Math.min(max, startValue + delta * scale));
23
+ }
@@ -2,9 +2,9 @@ import type { DiscoveryManifest, RuntimeManifest } from '../plugin/plugin.types.
2
2
  /** Sanitised `meta`, or `undefined` when there is nothing worth exposing. */
3
3
  export declare function serializableMeta(meta: Record<string, unknown> | undefined): Record<string, unknown> | undefined;
4
4
  /**
5
- * Builds the discovery view of the manifest — what `__PRISM_MANIFEST__` exposes.
5
+ * Builds the discovery view of the manifest, i.e. what `__PRISM_MANIFEST__` exposes.
6
6
  *
7
- * It is deliberately not the runtime manifest: no Angular class references, no
7
+ * It is not the runtime manifest: no Angular class references, no
8
8
  * providers, no scanned input/output metadata. It carries what an external tool
9
9
  * needs to enumerate and address variants, plus the `@Showcase` metadata that
10
10
  * lets a tool decide how to treat one.
@@ -1 +1 @@
1
- {"version":3,"file":"discovery-manifest.d.ts","sourceRoot":"","sources":["../../src/app/discovery-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,iBAAiB,EAEjB,eAAe,EAChB,MAAM,2BAA2B,CAAC;AAoDnC,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACxC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAOrC;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,eAAe,GACxB,iBAAiB,CAsCnB"}
1
+ {"version":3,"file":"discovery-manifest.d.ts","sourceRoot":"","sources":["../../src/app/discovery-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,iBAAiB,EAAoB,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAuD1H,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAM/G;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,eAAe,GAAG,iBAAiB,CAsCnF"}
@@ -1,18 +1,14 @@
1
1
  import { resolveVariantBg } from '../shared/variant-bg.js';
2
2
  /**
3
3
  * External tooling reads `__PRISM_MANIFEST__` through a structured-clone bridge
4
- * (`page.evaluate()` in Playwright, `postMessage`, devtools). `ShowcaseConfig.meta`
5
- * is declared as an open `Record<string, unknown>`, so a consumer is free to put
6
- * a component class, a function or a cyclic object in there — any of which makes
7
- * that bridge throw or silently drop the whole payload.
4
+ * (Playwright's `page.evaluate()`, `postMessage`, devtools). `ShowcaseConfig.meta`
5
+ * is an open `Record<string, unknown>`, and a class, function or cyclic object
6
+ * in it makes that bridge throw or drop the whole payload.
8
7
  *
9
- * Everything crossing into the global is therefore reduced to plain JSON-safe
10
- * values: primitives, arrays, and objects with a plain prototype. Class
11
- * instances (Angular types included), functions, symbols, Dates, Maps and DOM
12
- * nodes are dropped rather than half-serialised, and cycles are broken.
13
- *
14
- * Array elements become `null` when they cannot be represented, matching
15
- * `JSON.stringify` so indices stay stable.
8
+ * So only JSON-safe values cross: primitives, arrays and plain-prototype
9
+ * objects. Class instances, functions, symbols, Dates, Maps and DOM nodes are
10
+ * dropped and cycles are broken. Unrepresentable array elements become `null`,
11
+ * as in `JSON.stringify`, so indices stay stable.
16
12
  */
17
13
  function toSerializable(value, seen) {
18
14
  if (value === null)
@@ -59,9 +55,9 @@ export function serializableMeta(meta) {
59
55
  return serialized;
60
56
  }
61
57
  /**
62
- * Builds the discovery view of the manifest — what `__PRISM_MANIFEST__` exposes.
58
+ * Builds the discovery view of the manifest, i.e. what `__PRISM_MANIFEST__` exposes.
63
59
  *
64
- * It is deliberately not the runtime manifest: no Angular class references, no
60
+ * It is not the runtime manifest: no Angular class references, no
65
61
  * providers, no scanned input/output metadata. It carries what an external tool
66
62
  * needs to enumerate and address variants, plus the `@Showcase` metadata that
67
63
  * lets a tool decide how to treat one.
@@ -73,34 +69,32 @@ export function buildDiscoveryManifest(manifest) {
73
69
  // An empty `variants` array is not "no variants": the renderer still
74
70
  // instantiates the component with its declared defaults at index 0 and
75
71
  // marks it `data-prism-rendered="<class>:0"`. Reporting zero variants
76
- // here would let a runner walk past a component the app happily renders
77
- // — the quiet coverage loss the `excluded` status exists to prevent.
72
+ // here would let a runner walk past a component the app happily renders.
73
+ // That's the quiet coverage loss the `excluded` status exists to prevent.
78
74
  const declared = showcaseConfig.variants ?? [];
79
75
  const variants = declared.length
80
76
  ? declared.map((variant, index) => {
81
77
  const meta = serializableMeta(variant.meta);
82
78
  const bg = resolveVariantBg(showcaseConfig, index);
83
- return meta
84
- ? { name: variant.name, index, bg, meta }
85
- : { name: variant.name, index, bg };
79
+ return meta ? { name: variant.name, index, bg, meta } : { name: variant.name, index, bg };
86
80
  })
87
81
  : [
88
82
  {
89
83
  name: 'Default',
90
84
  index: 0,
91
- bg: resolveVariantBg(showcaseConfig, 0),
92
- },
85
+ bg: resolveVariantBg(showcaseConfig, 0)
86
+ }
93
87
  ];
94
88
  const meta = serializableMeta(showcaseConfig.meta);
95
89
  const discovered = {
96
90
  className,
97
91
  title: showcaseConfig.title,
98
- variants,
92
+ variants
99
93
  };
100
94
  if (meta)
101
95
  discovered.meta = meta;
102
96
  return discovered;
103
97
  }),
104
- pages: (manifest.pages ?? []).map((page) => ({ title: page.title })),
98
+ pages: (manifest.pages ?? []).map((page) => ({ title: page.title }))
105
99
  };
106
100
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prism-header-widget-host.component.d.ts","sourceRoot":"","sources":["../../../src/app/header/prism-header-widget-host.component.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,IAAI,EACV,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;;AAI3E,qBAca,8BAA8B;IACzC,QAAQ,CAAC,MAAM,8DAA4C;IAE3D,SAAS,CAAC,QAAQ,CAAC,QAAQ,+DAAsC;;yCAHtD,8BAA8B;2CAA9B,8BAA8B;CA8B1C"}
1
+ {"version":3,"file":"prism-header-widget-host.component.d.ts","sourceRoot":"","sources":["../../../src/app/header/prism-header-widget-host.component.ts"],"names":[],"mappings":"AACA,OAAO,EAA6D,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AACrG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;;AAI3E,qBAQa,8BAA8B;IACvC,QAAQ,CAAC,MAAM,8DAA4C;IAE3D,SAAS,CAAC,QAAQ,CAAC,QAAQ,+DAAsC;;yCAHxD,8BAA8B;2CAA9B,8BAA8B;CAgC1C"}
@@ -1,5 +1,5 @@
1
1
  import { NgComponentOutlet } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, effect, input, signal, } from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component, effect, input, signal } from '@angular/core';
3
3
  import * as i0 from "@angular/core";
4
4
  function PrismHeaderWidgetHostComponent_Conditional_0_ng_container_0_Template(rf, ctx) { if (rf & 1) {
5
5
  i0.ɵɵelementContainer(0);
@@ -46,14 +46,10 @@ export class PrismHeaderWidgetHostComponent {
46
46
  } if (rf & 2) {
47
47
  let tmp_0_0;
48
48
  i0.ɵɵconditional((tmp_0_0 = ctx.resolved()) ? 0 : -1, tmp_0_0);
49
- } }, dependencies: [NgComponentOutlet], styles: ["[_nghost-%COMP%] { display: contents; }"] });
49
+ } }, dependencies: [NgComponentOutlet], styles: ["[_nghost-%COMP%] {\n display: contents;\n}"] });
50
50
  }
51
51
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismHeaderWidgetHostComponent, [{
52
52
  type: Component,
53
- args: [{ selector: 'prism-header-widget-host', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgComponentOutlet], template: `
54
- @if (resolved(); as comp) {
55
- <ng-container *ngComponentOutlet="comp" />
56
- }
57
- `, styles: ["\n :host { display: contents; }\n "] }]
53
+ args: [{ selector: 'prism-header-widget-host', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgComponentOutlet], template: "@if (resolved(); as comp) {\n <ng-container *ngComponentOutlet=\"comp\" />\n}\n", styles: [":host {\n display: contents;\n}\n"] }]
58
54
  }], () => [], { widget: [{ type: i0.Input, args: [{ isSignal: true, alias: "widget", required: true }] }] }); })();
59
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismHeaderWidgetHostComponent, { className: "PrismHeaderWidgetHostComponent", filePath: "app/header/prism-header-widget-host.component.ts", lineNumber: 28 }); })();
55
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismHeaderWidgetHostComponent, { className: "PrismHeaderWidgetHostComponent", filePath: "app/header/prism-header-widget-host.component.ts", lineNumber: 15 }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"prism-header.component.d.ts","sourceRoot":"","sources":["../../../src/app/header/prism-header.component.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;;AAGvE,qBA2Na,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAC9D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAC5D,SAAS,CAAC,QAAQ,CAAC,aAAa,qBAA8B;IAC9D,SAAS,CAAC,QAAQ,CAAC,YAAY,oBAA6B;IAE5D,SAAS,CAAC,QAAQ,CAAC,YAAY,kGAK7B;IAEF,SAAS,CAAC,QAAQ,CAAC,UAAU,kGAK3B;IAEF,SAAS,CAAC,QAAQ,CAAC,OAAO,gDAKvB;IAEH,SAAS,CAAC,QAAQ,CAAC,KAAK,yCAAmD;IAC3E,SAAS,CAAC,QAAQ,CAAC,QAAQ,gDAAgD;IAE3E,SAAS,CAAC,QAAQ,CAAC,cAAc,gDAO9B;IAGH,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAO7C,SAAS,CAAC,aAAa,IAAI,IAAI;yCA/CpB,oBAAoB;2CAApB,oBAAoB;CAkDhC"}
1
+ {"version":3,"file":"prism-header.component.d.ts","sourceRoot":"","sources":["../../../src/app/header/prism-header.component.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;;AAIvE,qBAQa,oBAAoB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAC9D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAC5D,SAAS,CAAC,QAAQ,CAAC,aAAa,qBAA8B;IAC9D,SAAS,CAAC,QAAQ,CAAC,YAAY,oBAA6B;IAE5D,SAAS,CAAC,QAAQ,CAAC,YAAY,kGAE7B;IAEF,SAAS,CAAC,QAAQ,CAAC,UAAU,kGAI3B;IAEF,SAAS,CAAC,QAAQ,CAAC,OAAO,gDAOvB;IAEH,SAAS,CAAC,QAAQ,CAAC,KAAK,yCAAmD;IAC3E,SAAS,CAAC,QAAQ,CAAC,QAAQ,gDAAgD;IAE3E,SAAS,CAAC,QAAQ,CAAC,cAAc,gDAS9B;IAGH,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAO7C,SAAS,CAAC,aAAa,IAAI,IAAI;yCA/CtB,oBAAoB;2CAApB,oBAAoB;CAkDhC"}