@fusedashlabs/widgets 0.4.4 → 0.5.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 (394) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +24 -3
  3. package/dist/catalog/engine.d.ts +9 -0
  4. package/dist/catalog/engine.d.ts.map +1 -0
  5. package/dist/catalog/engine.js +28 -0
  6. package/dist/catalog/engine.js.map +1 -0
  7. package/dist/catalog/evaluate.d.ts +11 -0
  8. package/dist/catalog/evaluate.d.ts.map +1 -0
  9. package/dist/catalog/evaluate.js +18 -0
  10. package/dist/catalog/evaluate.js.map +1 -0
  11. package/dist/catalog/index.d.ts +8 -0
  12. package/dist/catalog/index.d.ts.map +1 -0
  13. package/dist/catalog/index.js +25 -0
  14. package/dist/catalog/index.js.map +1 -0
  15. package/dist/catalog/load.d.ts +11 -0
  16. package/dist/catalog/load.d.ts.map +1 -0
  17. package/dist/catalog/load.js +140 -0
  18. package/dist/catalog/load.js.map +1 -0
  19. package/dist/catalog/schema.d.ts +5 -0
  20. package/dist/catalog/schema.d.ts.map +1 -0
  21. package/dist/catalog/schema.js +143 -0
  22. package/dist/catalog/schema.js.map +1 -0
  23. package/dist/catalog/types.d.ts +83 -0
  24. package/dist/catalog/types.d.ts.map +1 -0
  25. package/dist/catalog/types.js +45 -0
  26. package/dist/catalog/types.js.map +1 -0
  27. package/dist/catalog/when.d.ts +13 -0
  28. package/dist/catalog/when.d.ts.map +1 -0
  29. package/dist/catalog/when.js +236 -0
  30. package/dist/catalog/when.js.map +1 -0
  31. package/dist/components/approval-bar/element/ui9000-approval-bar.d.ts +17 -0
  32. package/dist/components/approval-bar/element/ui9000-approval-bar.d.ts.map +1 -0
  33. package/dist/components/approval-bar/element/ui9000-approval-bar.js +83 -0
  34. package/dist/components/approval-bar/element/ui9000-approval-bar.js.map +1 -0
  35. package/dist/components/approval-bar/index.d.ts +4 -0
  36. package/dist/components/approval-bar/index.d.ts.map +1 -0
  37. package/dist/components/approval-bar/index.js +11 -0
  38. package/dist/components/approval-bar/index.js.map +1 -0
  39. package/dist/components/approval-bar/lib/normalize.d.ts +7 -0
  40. package/dist/components/approval-bar/lib/normalize.d.ts.map +1 -0
  41. package/dist/components/approval-bar/lib/normalize.js +12 -0
  42. package/dist/components/approval-bar/lib/normalize.js.map +1 -0
  43. package/dist/components/approval-bar/metadata.json.d.ts +99 -0
  44. package/dist/components/approval-bar/metadata.json.js +63 -0
  45. package/dist/components/approval-bar/metadata.json.js.map +1 -0
  46. package/dist/components/bar-chart/element/styles.js +3 -3
  47. package/dist/components/bar-chart/element/styles.js.map +1 -1
  48. package/dist/components/bar-chart/metadata.json.d.ts +53 -0
  49. package/dist/components/bar-chart/metadata.json.js +21 -0
  50. package/dist/components/bar-chart/metadata.json.js.map +1 -1
  51. package/dist/components/box-plot-chart/element/styles.js +3 -3
  52. package/dist/components/box-plot-chart/element/styles.js.map +1 -1
  53. package/dist/components/button/element/ui9000-button.d.ts +15 -0
  54. package/dist/components/button/element/ui9000-button.d.ts.map +1 -0
  55. package/dist/components/button/element/ui9000-button.js +56 -0
  56. package/dist/components/button/element/ui9000-button.js.map +1 -0
  57. package/dist/components/button/index.d.ts +3 -0
  58. package/dist/components/button/index.d.ts.map +1 -0
  59. package/dist/components/button/index.js +9 -0
  60. package/dist/components/button/index.js.map +1 -0
  61. package/dist/components/button/metadata.json.d.ts +99 -0
  62. package/dist/components/button/metadata.json.js +63 -0
  63. package/dist/components/button/metadata.json.js.map +1 -0
  64. package/dist/components/chart-renderer/element/styles.d.ts.map +1 -1
  65. package/dist/components/chart-renderer/element/styles.js +4 -1
  66. package/dist/components/chart-renderer/element/styles.js.map +1 -1
  67. package/dist/components/chart-renderer/element/ui9000-chart-renderer.d.ts.map +1 -1
  68. package/dist/components/chart-renderer/element/ui9000-chart-renderer.js +12 -0
  69. package/dist/components/chart-renderer/element/ui9000-chart-renderer.js.map +1 -1
  70. package/dist/components/chart-renderer/metadata.json.d.ts +7 -1
  71. package/dist/components/chart-renderer/metadata.json.js +4 -1
  72. package/dist/components/chart-renderer/metadata.json.js.map +1 -1
  73. package/dist/components/checkbox/element/ui9000-checkbox.d.ts +16 -0
  74. package/dist/components/checkbox/element/ui9000-checkbox.d.ts.map +1 -0
  75. package/dist/components/checkbox/element/ui9000-checkbox.js +71 -0
  76. package/dist/components/checkbox/element/ui9000-checkbox.js.map +1 -0
  77. package/dist/components/checkbox/index.d.ts +3 -0
  78. package/dist/components/checkbox/index.d.ts.map +1 -0
  79. package/dist/components/checkbox/index.js +9 -0
  80. package/dist/components/checkbox/index.js.map +1 -0
  81. package/dist/components/checkbox/metadata.json.d.ts +99 -0
  82. package/dist/components/checkbox/metadata.json.js +63 -0
  83. package/dist/components/checkbox/metadata.json.js.map +1 -0
  84. package/dist/components/custom-widget/element/styles.d.ts +2 -0
  85. package/dist/components/custom-widget/element/styles.d.ts.map +1 -0
  86. package/dist/components/custom-widget/element/styles.js +286 -0
  87. package/dist/components/custom-widget/element/styles.js.map +1 -0
  88. package/dist/components/custom-widget/element/ui9000-custom-widget.d.ts +47 -0
  89. package/dist/components/custom-widget/element/ui9000-custom-widget.d.ts.map +1 -0
  90. package/dist/components/custom-widget/element/ui9000-custom-widget.js +242 -0
  91. package/dist/components/custom-widget/element/ui9000-custom-widget.js.map +1 -0
  92. package/dist/components/custom-widget/index.d.ts +4 -0
  93. package/dist/components/custom-widget/index.d.ts.map +1 -0
  94. package/dist/components/custom-widget/index.js +19 -0
  95. package/dist/components/custom-widget/index.js.map +1 -0
  96. package/dist/components/custom-widget/lib/content.d.ts +2 -0
  97. package/dist/components/custom-widget/lib/content.d.ts.map +1 -0
  98. package/dist/components/custom-widget/lib/index.d.ts +8 -0
  99. package/dist/components/custom-widget/lib/index.d.ts.map +1 -0
  100. package/dist/components/custom-widget/lib/layout.d.ts +35 -0
  101. package/dist/components/custom-widget/lib/layout.d.ts.map +1 -0
  102. package/dist/components/custom-widget/lib/layout.js +13 -0
  103. package/dist/components/custom-widget/lib/layout.js.map +1 -0
  104. package/dist/components/custom-widget/lib/markdown.d.ts +2 -0
  105. package/dist/components/custom-widget/lib/markdown.d.ts.map +1 -0
  106. package/dist/components/custom-widget/lib/normalize.d.ts +6 -0
  107. package/dist/components/custom-widget/lib/normalize.d.ts.map +1 -0
  108. package/dist/components/custom-widget/lib/normalize.js +144 -0
  109. package/dist/components/custom-widget/lib/normalize.js.map +1 -0
  110. package/dist/components/custom-widget/lib/table.d.ts +2 -0
  111. package/dist/components/custom-widget/lib/table.d.ts.map +1 -0
  112. package/dist/components/custom-widget/lib/types.d.ts +55 -0
  113. package/dist/components/custom-widget/lib/types.d.ts.map +1 -0
  114. package/dist/components/custom-widget/metadata.json.d.ts +97 -0
  115. package/dist/components/custom-widget/metadata.json.js +45 -0
  116. package/dist/components/custom-widget/metadata.json.js.map +1 -0
  117. package/dist/components/date-input/element/ui9000-date-input.d.ts +16 -0
  118. package/dist/components/date-input/element/ui9000-date-input.d.ts.map +1 -0
  119. package/dist/components/date-input/element/ui9000-date-input.js +71 -0
  120. package/dist/components/date-input/element/ui9000-date-input.js.map +1 -0
  121. package/dist/components/date-input/index.d.ts +3 -0
  122. package/dist/components/date-input/index.d.ts.map +1 -0
  123. package/dist/components/date-input/index.js +9 -0
  124. package/dist/components/date-input/index.js.map +1 -0
  125. package/dist/components/date-input/metadata.json.d.ts +99 -0
  126. package/dist/components/date-input/metadata.json.js +63 -0
  127. package/dist/components/date-input/metadata.json.js.map +1 -0
  128. package/dist/components/entity-detail/element/ui9000-entity-detail.d.ts +17 -0
  129. package/dist/components/entity-detail/element/ui9000-entity-detail.d.ts.map +1 -0
  130. package/dist/components/entity-detail/element/ui9000-entity-detail.js +91 -0
  131. package/dist/components/entity-detail/element/ui9000-entity-detail.js.map +1 -0
  132. package/dist/components/entity-detail/index.d.ts +4 -0
  133. package/dist/components/entity-detail/index.d.ts.map +1 -0
  134. package/dist/components/entity-detail/index.js +11 -0
  135. package/dist/components/entity-detail/index.js.map +1 -0
  136. package/dist/components/entity-detail/lib/normalize.d.ts +17 -0
  137. package/dist/components/entity-detail/lib/normalize.d.ts.map +1 -0
  138. package/dist/components/entity-detail/lib/normalize.js +34 -0
  139. package/dist/components/entity-detail/lib/normalize.js.map +1 -0
  140. package/dist/components/entity-detail/metadata.json.d.ts +110 -0
  141. package/dist/components/entity-detail/metadata.json.js +63 -0
  142. package/dist/components/entity-detail/metadata.json.js.map +1 -0
  143. package/dist/components/event-timeline/element/ui9000-event-timeline.d.ts +17 -0
  144. package/dist/components/event-timeline/element/ui9000-event-timeline.d.ts.map +1 -0
  145. package/dist/components/event-timeline/element/ui9000-event-timeline.js +78 -0
  146. package/dist/components/event-timeline/element/ui9000-event-timeline.js.map +1 -0
  147. package/dist/components/event-timeline/index.d.ts +4 -0
  148. package/dist/components/event-timeline/index.d.ts.map +1 -0
  149. package/dist/components/event-timeline/index.js +11 -0
  150. package/dist/components/event-timeline/index.js.map +1 -0
  151. package/dist/components/event-timeline/lib/normalize.d.ts +10 -0
  152. package/dist/components/event-timeline/lib/normalize.d.ts.map +1 -0
  153. package/dist/components/event-timeline/lib/normalize.js +25 -0
  154. package/dist/components/event-timeline/lib/normalize.js.map +1 -0
  155. package/dist/components/event-timeline/metadata.json.d.ts +124 -0
  156. package/dist/components/event-timeline/metadata.json.js +63 -0
  157. package/dist/components/event-timeline/metadata.json.js.map +1 -0
  158. package/dist/components/evidence-panel/element/ui9000-evidence-panel.d.ts +17 -0
  159. package/dist/components/evidence-panel/element/ui9000-evidence-panel.d.ts.map +1 -0
  160. package/dist/components/evidence-panel/element/ui9000-evidence-panel.js +84 -0
  161. package/dist/components/evidence-panel/element/ui9000-evidence-panel.js.map +1 -0
  162. package/dist/components/evidence-panel/index.d.ts +4 -0
  163. package/dist/components/evidence-panel/index.d.ts.map +1 -0
  164. package/dist/components/evidence-panel/index.js +11 -0
  165. package/dist/components/evidence-panel/index.js.map +1 -0
  166. package/dist/components/evidence-panel/lib/normalize.d.ts +19 -0
  167. package/dist/components/evidence-panel/lib/normalize.d.ts.map +1 -0
  168. package/dist/components/evidence-panel/lib/normalize.js +33 -0
  169. package/dist/components/evidence-panel/lib/normalize.js.map +1 -0
  170. package/dist/components/evidence-panel/metadata.json.d.ts +114 -0
  171. package/dist/components/evidence-panel/metadata.json.js +63 -0
  172. package/dist/components/evidence-panel/metadata.json.js.map +1 -0
  173. package/dist/components/form/element/ui9000-form.d.ts +21 -0
  174. package/dist/components/form/element/ui9000-form.d.ts.map +1 -0
  175. package/dist/components/form/element/ui9000-form.js +115 -0
  176. package/dist/components/form/element/ui9000-form.js.map +1 -0
  177. package/dist/components/form/index.d.ts +4 -0
  178. package/dist/components/form/index.d.ts.map +1 -0
  179. package/dist/components/form/index.js +11 -0
  180. package/dist/components/form/index.js.map +1 -0
  181. package/dist/components/form/lib/normalize.d.ts +14 -0
  182. package/dist/components/form/lib/normalize.d.ts.map +1 -0
  183. package/dist/components/form/lib/normalize.js +36 -0
  184. package/dist/components/form/lib/normalize.js.map +1 -0
  185. package/dist/components/form/metadata.json.d.ts +94 -0
  186. package/dist/components/form/metadata.json.js +63 -0
  187. package/dist/components/form/metadata.json.js.map +1 -0
  188. package/dist/components/histogram-chart/element/styles.js +2 -2
  189. package/dist/components/histogram-chart/element/styles.js.map +1 -1
  190. package/dist/components/histogram-chart/metadata.json.d.ts +47 -0
  191. package/dist/components/histogram-chart/metadata.json.js +21 -0
  192. package/dist/components/histogram-chart/metadata.json.js.map +1 -1
  193. package/dist/components/image/element/ui9000-image.d.ts +17 -0
  194. package/dist/components/image/element/ui9000-image.d.ts.map +1 -0
  195. package/dist/components/image/element/ui9000-image.js +74 -0
  196. package/dist/components/image/element/ui9000-image.js.map +1 -0
  197. package/dist/components/image/index.d.ts +4 -0
  198. package/dist/components/image/index.d.ts.map +1 -0
  199. package/dist/components/image/index.js +13 -0
  200. package/dist/components/image/index.js.map +1 -0
  201. package/dist/components/image/lib/url.d.ts +14 -0
  202. package/dist/components/image/lib/url.d.ts.map +1 -0
  203. package/dist/components/image/lib/url.js +23 -0
  204. package/dist/components/image/lib/url.js.map +1 -0
  205. package/dist/components/image/metadata.json.d.ts +95 -0
  206. package/dist/components/image/metadata.json.js +63 -0
  207. package/dist/components/image/metadata.json.js.map +1 -0
  208. package/dist/components/kpi-widget/metadata.json.d.ts +47 -0
  209. package/dist/components/kpi-widget/metadata.json.js +21 -0
  210. package/dist/components/kpi-widget/metadata.json.js.map +1 -1
  211. package/dist/components/line-chart/element/styles.js +2 -2
  212. package/dist/components/line-chart/element/styles.js.map +1 -1
  213. package/dist/components/lollipop/element/styles.js +3 -3
  214. package/dist/components/lollipop/element/styles.js.map +1 -1
  215. package/dist/components/map-chart/metadata.json.d.ts +54 -2
  216. package/dist/components/map-chart/metadata.json.js +23 -2
  217. package/dist/components/map-chart/metadata.json.js.map +1 -1
  218. package/dist/components/multi-select/element/ui9000-multi-select.d.ts +16 -0
  219. package/dist/components/multi-select/element/ui9000-multi-select.d.ts.map +1 -0
  220. package/dist/components/multi-select/element/ui9000-multi-select.js +77 -0
  221. package/dist/components/multi-select/element/ui9000-multi-select.js.map +1 -0
  222. package/dist/components/multi-select/index.d.ts +3 -0
  223. package/dist/components/multi-select/index.d.ts.map +1 -0
  224. package/dist/components/multi-select/index.js +9 -0
  225. package/dist/components/multi-select/index.js.map +1 -0
  226. package/dist/components/multi-select/metadata.json.d.ts +99 -0
  227. package/dist/components/multi-select/metadata.json.js +63 -0
  228. package/dist/components/multi-select/metadata.json.js.map +1 -0
  229. package/dist/components/network-graph/metadata.json.d.ts +53 -2
  230. package/dist/components/network-graph/metadata.json.js +23 -2
  231. package/dist/components/network-graph/metadata.json.js.map +1 -1
  232. package/dist/components/number-input/element/ui9000-number-input.d.ts +16 -0
  233. package/dist/components/number-input/element/ui9000-number-input.d.ts.map +1 -0
  234. package/dist/components/number-input/element/ui9000-number-input.js +71 -0
  235. package/dist/components/number-input/element/ui9000-number-input.js.map +1 -0
  236. package/dist/components/number-input/index.d.ts +3 -0
  237. package/dist/components/number-input/index.d.ts.map +1 -0
  238. package/dist/components/number-input/index.js +9 -0
  239. package/dist/components/number-input/index.js.map +1 -0
  240. package/dist/components/number-input/metadata.json.d.ts +99 -0
  241. package/dist/components/number-input/metadata.json.js +63 -0
  242. package/dist/components/number-input/metadata.json.js.map +1 -0
  243. package/dist/components/select/element/ui9000-select.d.ts +16 -0
  244. package/dist/components/select/element/ui9000-select.d.ts.map +1 -0
  245. package/dist/components/select/element/ui9000-select.js +73 -0
  246. package/dist/components/select/element/ui9000-select.js.map +1 -0
  247. package/dist/components/select/index.d.ts +3 -0
  248. package/dist/components/select/index.d.ts.map +1 -0
  249. package/dist/components/select/index.js +9 -0
  250. package/dist/components/select/index.js.map +1 -0
  251. package/dist/components/select/metadata.json.d.ts +99 -0
  252. package/dist/components/select/metadata.json.js +63 -0
  253. package/dist/components/select/metadata.json.js.map +1 -0
  254. package/dist/components/step-line-chart/element/styles.js +2 -2
  255. package/dist/components/step-line-chart/element/styles.js.map +1 -1
  256. package/dist/components/table/element/styles.d.ts +2 -0
  257. package/dist/components/table/element/styles.d.ts.map +1 -0
  258. package/dist/components/table/element/styles.js +105 -0
  259. package/dist/components/table/element/styles.js.map +1 -0
  260. package/dist/components/table/element/ui9000-table.d.ts +17 -0
  261. package/dist/components/table/element/ui9000-table.d.ts.map +1 -0
  262. package/dist/components/table/element/ui9000-table.js +113 -0
  263. package/dist/components/table/element/ui9000-table.js.map +1 -0
  264. package/dist/components/table/index.d.ts +4 -0
  265. package/dist/components/table/index.d.ts.map +1 -0
  266. package/dist/components/table/index.js +14 -0
  267. package/dist/components/table/index.js.map +1 -0
  268. package/dist/components/table/lib/table.d.ts +55 -0
  269. package/dist/components/table/lib/table.d.ts.map +1 -0
  270. package/dist/components/table/lib/table.js +181 -0
  271. package/dist/components/table/lib/table.js.map +1 -0
  272. package/dist/components/table/metadata.json.d.ts +88 -0
  273. package/dist/components/table/metadata.json.js +63 -0
  274. package/dist/components/table/metadata.json.js.map +1 -0
  275. package/dist/components/text/element/ui9000-text.d.ts +16 -0
  276. package/dist/components/text/element/ui9000-text.d.ts.map +1 -0
  277. package/dist/components/text/element/ui9000-text.js +90 -0
  278. package/dist/components/text/element/ui9000-text.js.map +1 -0
  279. package/dist/components/text/index.d.ts +4 -0
  280. package/dist/components/text/index.d.ts.map +1 -0
  281. package/dist/components/text/index.js +11 -0
  282. package/dist/components/text/index.js.map +1 -0
  283. package/dist/components/text/lib/content.d.ts +2 -0
  284. package/dist/components/text/lib/content.d.ts.map +1 -0
  285. package/dist/components/text/lib/markdown.d.ts +4 -0
  286. package/dist/components/text/lib/markdown.d.ts.map +1 -0
  287. package/dist/components/text/lib/markdown.js +125 -0
  288. package/dist/components/text/lib/markdown.js.map +1 -0
  289. package/dist/components/text/metadata.json.d.ts +98 -0
  290. package/dist/components/text/metadata.json.js +63 -0
  291. package/dist/components/text/metadata.json.js.map +1 -0
  292. package/dist/components/text-input/element/ui9000-text-input.d.ts +16 -0
  293. package/dist/components/text-input/element/ui9000-text-input.d.ts.map +1 -0
  294. package/dist/components/text-input/element/ui9000-text-input.js +70 -0
  295. package/dist/components/text-input/element/ui9000-text-input.js.map +1 -0
  296. package/dist/components/text-input/index.d.ts +3 -0
  297. package/dist/components/text-input/index.d.ts.map +1 -0
  298. package/dist/components/text-input/index.js +9 -0
  299. package/dist/components/text-input/index.js.map +1 -0
  300. package/dist/components/text-input/metadata.json.d.ts +99 -0
  301. package/dist/components/text-input/metadata.json.js +63 -0
  302. package/dist/components/text-input/metadata.json.js.map +1 -0
  303. package/dist/element/chart-shell-styles.d.ts.map +1 -1
  304. package/dist/element/chart-shell-styles.js +11 -4
  305. package/dist/element/chart-shell-styles.js.map +1 -1
  306. package/dist/element/dispatch-ui9000.d.ts +11 -0
  307. package/dist/element/dispatch-ui9000.d.ts.map +1 -0
  308. package/dist/element/dispatch-ui9000.js +21 -0
  309. package/dist/element/dispatch-ui9000.js.map +1 -0
  310. package/dist/element/surface-styles.d.ts +2 -0
  311. package/dist/element/surface-styles.d.ts.map +1 -0
  312. package/dist/element/surface-styles.js +84 -0
  313. package/dist/element/surface-styles.js.map +1 -0
  314. package/dist/element/ui9000-chart-base.d.ts +5 -0
  315. package/dist/element/ui9000-chart-base.d.ts.map +1 -1
  316. package/dist/element/ui9000-chart-base.js +7 -1
  317. package/dist/element/ui9000-chart-base.js.map +1 -1
  318. package/dist/index.d.ts +20 -2
  319. package/dist/index.d.ts.map +1 -1
  320. package/dist/index.js +116 -1
  321. package/dist/index.js.map +1 -1
  322. package/dist/lazy/approval-bar.d.ts +4 -0
  323. package/dist/lazy/approval-bar.d.ts.map +1 -0
  324. package/dist/lazy/approval-bar.js +5 -0
  325. package/dist/lazy/approval-bar.js.map +1 -0
  326. package/dist/lazy/button.d.ts +4 -0
  327. package/dist/lazy/button.d.ts.map +1 -0
  328. package/dist/lazy/button.js +5 -0
  329. package/dist/lazy/button.js.map +1 -0
  330. package/dist/lazy/checkbox.d.ts +4 -0
  331. package/dist/lazy/checkbox.d.ts.map +1 -0
  332. package/dist/lazy/checkbox.js +5 -0
  333. package/dist/lazy/checkbox.js.map +1 -0
  334. package/dist/lazy/custom-widget.d.ts +4 -0
  335. package/dist/lazy/custom-widget.d.ts.map +1 -0
  336. package/dist/lazy/custom-widget.js +5 -0
  337. package/dist/lazy/custom-widget.js.map +1 -0
  338. package/dist/lazy/date-input.d.ts +4 -0
  339. package/dist/lazy/date-input.d.ts.map +1 -0
  340. package/dist/lazy/date-input.js +5 -0
  341. package/dist/lazy/date-input.js.map +1 -0
  342. package/dist/lazy/entity-detail.d.ts +4 -0
  343. package/dist/lazy/entity-detail.d.ts.map +1 -0
  344. package/dist/lazy/entity-detail.js +5 -0
  345. package/dist/lazy/entity-detail.js.map +1 -0
  346. package/dist/lazy/event-timeline.d.ts +4 -0
  347. package/dist/lazy/event-timeline.d.ts.map +1 -0
  348. package/dist/lazy/event-timeline.js +5 -0
  349. package/dist/lazy/event-timeline.js.map +1 -0
  350. package/dist/lazy/evidence-panel.d.ts +4 -0
  351. package/dist/lazy/evidence-panel.d.ts.map +1 -0
  352. package/dist/lazy/evidence-panel.js +5 -0
  353. package/dist/lazy/evidence-panel.js.map +1 -0
  354. package/dist/lazy/form.d.ts +4 -0
  355. package/dist/lazy/form.d.ts.map +1 -0
  356. package/dist/lazy/form.js +5 -0
  357. package/dist/lazy/form.js.map +1 -0
  358. package/dist/lazy/image.d.ts +4 -0
  359. package/dist/lazy/image.d.ts.map +1 -0
  360. package/dist/lazy/image.js +5 -0
  361. package/dist/lazy/image.js.map +1 -0
  362. package/dist/lazy/index.d.ts +17 -1
  363. package/dist/lazy/index.d.ts.map +1 -1
  364. package/dist/lazy/index.js +128 -0
  365. package/dist/lazy/index.js.map +1 -1
  366. package/dist/lazy/multi-select.d.ts +4 -0
  367. package/dist/lazy/multi-select.d.ts.map +1 -0
  368. package/dist/lazy/multi-select.js +5 -0
  369. package/dist/lazy/multi-select.js.map +1 -0
  370. package/dist/lazy/number-input.d.ts +4 -0
  371. package/dist/lazy/number-input.d.ts.map +1 -0
  372. package/dist/lazy/number-input.js +5 -0
  373. package/dist/lazy/number-input.js.map +1 -0
  374. package/dist/lazy/select.d.ts +4 -0
  375. package/dist/lazy/select.d.ts.map +1 -0
  376. package/dist/lazy/select.js +5 -0
  377. package/dist/lazy/select.js.map +1 -0
  378. package/dist/lazy/table.d.ts +4 -0
  379. package/dist/lazy/table.d.ts.map +1 -0
  380. package/dist/lazy/table.js +5 -0
  381. package/dist/lazy/table.js.map +1 -0
  382. package/dist/lazy/text-input.d.ts +4 -0
  383. package/dist/lazy/text-input.d.ts.map +1 -0
  384. package/dist/lazy/text-input.js +5 -0
  385. package/dist/lazy/text-input.js.map +1 -0
  386. package/dist/lazy/text.d.ts +4 -0
  387. package/dist/lazy/text.d.ts.map +1 -0
  388. package/dist/lazy/text.js +5 -0
  389. package/dist/lazy/text.js.map +1 -0
  390. package/dist/lib/labelled-control.d.ts +12 -0
  391. package/dist/lib/labelled-control.d.ts.map +1 -0
  392. package/dist/lib/labelled-control.js +14 -0
  393. package/dist/lib/labelled-control.js.map +1 -0
  394. package/package.json +134 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/catalog/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ const INTENTS = [
2
+ "spatial",
3
+ "comparison",
4
+ "summary",
5
+ "form",
6
+ "evidence",
7
+ "graph"
8
+ ];
9
+ const CATALOG_TIERS = ["engine", "substrate", "host"];
10
+ const ALLOWED_ACTIONS = [
11
+ "hover",
12
+ "resize",
13
+ "select",
14
+ "submit",
15
+ "approve",
16
+ "reject",
17
+ "pan",
18
+ "zoom",
19
+ "drag",
20
+ "filter"
21
+ ];
22
+ const DATA_PROFILE_KEYS = [
23
+ "hasCategory",
24
+ "hasNumericMetric",
25
+ "categoryCardinality",
26
+ "hasGeo",
27
+ "hasTemporal",
28
+ "hasNodes",
29
+ "hasLinks",
30
+ "hasTabularRows",
31
+ "rowCount",
32
+ "hasEntityId",
33
+ "hasClaim",
34
+ "hasEvents",
35
+ "controlCount",
36
+ "allControlsLabelled",
37
+ "hasMapToken"
38
+ ];
39
+ export {
40
+ ALLOWED_ACTIONS,
41
+ CATALOG_TIERS,
42
+ DATA_PROFILE_KEYS,
43
+ INTENTS
44
+ };
45
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":["../../src/catalog/types.ts"],"sourcesContent":["/** Closed intent enum — Stage 3 must not rename these. */\nexport const INTENTS = [\n 'spatial',\n 'comparison',\n 'summary',\n 'form',\n 'evidence',\n 'graph',\n] as const;\n\nexport type Intent = (typeof INTENTS)[number];\n\nexport const CATALOG_TIERS = ['engine', 'substrate', 'host'] as const;\n\nexport type CatalogTier = (typeof CATALOG_TIERS)[number];\n\n/** Closed action types declared in engine metadata — not JS handler names. */\nexport const ALLOWED_ACTIONS = [\n 'hover',\n 'resize',\n 'select',\n 'submit',\n 'approve',\n 'reject',\n 'pan',\n 'zoom',\n 'drag',\n 'filter',\n] as const;\n\nexport type AllowedAction = (typeof ALLOWED_ACTIONS)[number];\n\n/** Closed DataProfile keys — evalCases.profile and `when` strings may use only these. */\nexport const DATA_PROFILE_KEYS = [\n 'hasCategory',\n 'hasNumericMetric',\n 'categoryCardinality',\n 'hasGeo',\n 'hasTemporal',\n 'hasNodes',\n 'hasLinks',\n 'hasTabularRows',\n 'rowCount',\n 'hasEntityId',\n 'hasClaim',\n 'hasEvents',\n 'controlCount',\n 'allControlsLabelled',\n 'hasMapToken',\n] as const;\n\nexport type DataProfileKey = (typeof DATA_PROFILE_KEYS)[number];\n\nexport type DataProfile = {\n hasCategory?: boolean;\n hasNumericMetric?: boolean;\n categoryCardinality?: number;\n hasGeo?: boolean;\n hasTemporal?: boolean;\n hasNodes?: boolean;\n hasLinks?: boolean;\n hasTabularRows?: boolean;\n rowCount?: number;\n hasEntityId?: boolean;\n hasClaim?: boolean;\n hasEvents?: boolean;\n controlCount?: number;\n allControlsLabelled?: boolean;\n hasMapToken?: boolean;\n};\n\nexport type DataRole = {\n id: string;\n required: boolean;\n description: string;\n cardinality?: string;\n type?: string;\n};\n\nexport type CatalogRule = {\n when: string;\n reason: string;\n};\n\nexport type AccessibilityBlock = {\n nameFrom: string;\n keyboard: string[];\n shadowBoundary: string;\n};\n\nexport type EvalCase = {\n id: string;\n intent: Intent;\n profile: DataProfile;\n expect: 'eligible' | 'disqualified';\n reasonIncludes: string;\n};\n\nexport type EngineMetadata = {\n id: string;\n tag: string;\n title: string;\n description: string;\n entry: string;\n lazyImport: string;\n propsSchema: Record<string, unknown>;\n tier: 'engine';\n intents: Intent[];\n dataRoles: DataRole[];\n eligibility: CatalogRule[];\n disqualify: CatalogRule[];\n allowedActions: AllowedAction[];\n accessibility: AccessibilityBlock;\n evalCases: EvalCase[];\n chartTypeKeys?: string[];\n source?: string;\n stack?: string;\n usageConditions?: Record<string, unknown>;\n};\n\nexport type PortMetadata = {\n id: string;\n tag: string;\n title?: string;\n description?: string;\n entry?: string;\n lazyImport?: string;\n tier?: CatalogTier;\n [key: string]: unknown;\n};\n"],"names":[],"mappings":"AACO,MAAM,UAAU;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAIO,MAAM,gBAAgB,CAAC,UAAU,aAAa,MAAM;AAKpD,MAAM,kBAAkB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAKO,MAAM,oBAAoB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;"}
@@ -0,0 +1,13 @@
1
+ import { DataProfile, DataProfileKey } from './types.js';
2
+ declare function isDataProfileKey(key: string): key is DataProfileKey;
3
+ /** Pull `profile.<key>` identifiers out of a `when` string. */
4
+ export declare function profileKeysInWhen(when: string): string[];
5
+ export declare function assertWhenUsesClosedProfile(when: string): void;
6
+ export declare function assertProfileUsesClosedKeys(profile: DataProfile): void;
7
+ /**
8
+ * Evaluate a catalog `when` string against a profile.
9
+ * Only `profile.<DataProfileKey>`, numbers, && || ! comparisons, and grouping.
10
+ */
11
+ export declare function evalWhen(when: string, profile: DataProfile): boolean;
12
+ export { isDataProfileKey };
13
+ //# sourceMappingURL=when.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when.d.ts","sourceRoot":"","sources":["../../src/catalog/when.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAetF,iBAAS,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,IAAI,cAAc,CAE5D;AA8ND,+DAA+D;AAC/D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAIxD;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAK9D;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAMtE;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAMpE;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,236 @@
1
+ import { DATA_PROFILE_KEYS } from "./types.js";
2
+ const PROFILE_KEY_SET = new Set(DATA_PROFILE_KEYS);
3
+ const CMP_OPS = ["===", "!==", "<=", ">=", "<", ">"];
4
+ function isDataProfileKey(key) {
5
+ return PROFILE_KEY_SET.has(key);
6
+ }
7
+ function tokenize(when) {
8
+ const tokens = [];
9
+ let i = 0;
10
+ const src = when;
11
+ const skipWs = () => {
12
+ while (i < src.length && /\s/.test(src[i])) i += 1;
13
+ };
14
+ while (i < src.length) {
15
+ skipWs();
16
+ if (i >= src.length) break;
17
+ if (src.startsWith("profile.", i)) {
18
+ i += "profile.".length;
19
+ const start = i;
20
+ if (!/[A-Za-z]/.test(src[i] ?? "")) {
21
+ throw new Error(`when: expected DataProfile key after profile. at ${start}`);
22
+ }
23
+ i += 1;
24
+ while (i < src.length && /[A-Za-z0-9]/.test(src[i])) i += 1;
25
+ const key = src.slice(start, i);
26
+ if (!isDataProfileKey(key)) {
27
+ throw new Error(`when references unknown DataProfile key "${key}"`);
28
+ }
29
+ skipWs();
30
+ if (src[i] === "(") {
31
+ throw new Error("when does not allow calls");
32
+ }
33
+ tokens.push({ kind: "profile", key });
34
+ continue;
35
+ }
36
+ if (src.startsWith("&&", i)) {
37
+ tokens.push({ kind: "op", op: "&&" });
38
+ i += 2;
39
+ continue;
40
+ }
41
+ if (src.startsWith("||", i)) {
42
+ tokens.push({ kind: "op", op: "||" });
43
+ i += 2;
44
+ continue;
45
+ }
46
+ if (src.startsWith("===", i)) {
47
+ tokens.push({ kind: "op", op: "===" });
48
+ i += 3;
49
+ continue;
50
+ }
51
+ if (src.startsWith("!==", i)) {
52
+ tokens.push({ kind: "op", op: "!==" });
53
+ i += 3;
54
+ continue;
55
+ }
56
+ if (src.startsWith("<=", i)) {
57
+ tokens.push({ kind: "op", op: "<=" });
58
+ i += 2;
59
+ continue;
60
+ }
61
+ if (src.startsWith(">=", i)) {
62
+ tokens.push({ kind: "op", op: ">=" });
63
+ i += 2;
64
+ continue;
65
+ }
66
+ if (src[i] === "<" || src[i] === ">") {
67
+ tokens.push({ kind: "op", op: src[i] });
68
+ i += 1;
69
+ continue;
70
+ }
71
+ if (src[i] === "!") {
72
+ tokens.push({ kind: "op", op: "!" });
73
+ i += 1;
74
+ continue;
75
+ }
76
+ if (src[i] === "(") {
77
+ tokens.push({ kind: "lparen" });
78
+ i += 1;
79
+ continue;
80
+ }
81
+ if (src[i] === ")") {
82
+ tokens.push({ kind: "rparen" });
83
+ i += 1;
84
+ continue;
85
+ }
86
+ if (src[i] === "-" || /[0-9]/.test(src[i])) {
87
+ const start = i;
88
+ if (src[i] === "-") i += 1;
89
+ if (!/[0-9]/.test(src[i] ?? "")) {
90
+ throw new Error(`when uses disallowed characters near "${src.slice(start)}"`);
91
+ }
92
+ while (i < src.length && /[0-9]/.test(src[i])) i += 1;
93
+ if (src[i] === ".") {
94
+ i += 1;
95
+ if (!/[0-9]/.test(src[i] ?? "")) {
96
+ throw new Error("when: number has a trailing dot");
97
+ }
98
+ while (i < src.length && /[0-9]/.test(src[i])) i += 1;
99
+ }
100
+ tokens.push({ kind: "number", value: Number(src.slice(start, i)) });
101
+ continue;
102
+ }
103
+ throw new Error(`when uses disallowed characters: ${src.slice(i)}`);
104
+ }
105
+ return tokens;
106
+ }
107
+ class Parser {
108
+ constructor(tokens, profile) {
109
+ this.tokens = tokens;
110
+ this.profile = profile;
111
+ this.pos = 0;
112
+ }
113
+ peek() {
114
+ return this.tokens[this.pos];
115
+ }
116
+ peekOp(op) {
117
+ const token = this.peek();
118
+ return (token == null ? void 0 : token.kind) === "op" && token.op === op;
119
+ }
120
+ take() {
121
+ const token = this.tokens[this.pos];
122
+ if (!token) throw new Error("when: unexpected end of expression");
123
+ this.pos += 1;
124
+ return token;
125
+ }
126
+ expectEnd() {
127
+ if (this.pos !== this.tokens.length) {
128
+ throw new Error("when: unexpected trailing tokens");
129
+ }
130
+ }
131
+ parseExpr() {
132
+ return this.parseOr();
133
+ }
134
+ parseOr() {
135
+ let left = this.parseAnd();
136
+ while (this.peekOp("||")) {
137
+ this.take();
138
+ const right = this.parseAnd();
139
+ left = left || right;
140
+ }
141
+ return left;
142
+ }
143
+ parseAnd() {
144
+ let left = this.parseComparison();
145
+ while (this.peekOp("&&")) {
146
+ this.take();
147
+ const right = this.parseComparison();
148
+ left = left && right;
149
+ }
150
+ return left;
151
+ }
152
+ parseComparison() {
153
+ const left = this.parseUnary();
154
+ const next = this.peek();
155
+ if ((next == null ? void 0 : next.kind) === "op" && CMP_OPS.includes(next.op)) {
156
+ const op = next.op;
157
+ this.take();
158
+ const right = this.parseUnary();
159
+ return compare(op, left, right);
160
+ }
161
+ return left;
162
+ }
163
+ parseUnary() {
164
+ const next = this.peek();
165
+ if ((next == null ? void 0 : next.kind) === "op" && next.op === "!") {
166
+ this.take();
167
+ return !this.parseUnary();
168
+ }
169
+ return this.parsePrimary();
170
+ }
171
+ parsePrimary() {
172
+ const token = this.take();
173
+ if (token.kind === "profile") {
174
+ return this.profile[token.key];
175
+ }
176
+ if (token.kind === "number") {
177
+ return token.value;
178
+ }
179
+ if (token.kind === "lparen") {
180
+ const inner = this.parseExpr();
181
+ const close = this.take();
182
+ if (close.kind !== "rparen") {
183
+ throw new Error("when: expected closing parenthesis");
184
+ }
185
+ return inner;
186
+ }
187
+ throw new Error("when: expected profile key, number, or grouped expression");
188
+ }
189
+ }
190
+ function compare(op, left, right) {
191
+ switch (op) {
192
+ case "===":
193
+ return left === right;
194
+ case "!==":
195
+ return left !== right;
196
+ case "<=":
197
+ return left <= right;
198
+ case ">=":
199
+ return left >= right;
200
+ case "<":
201
+ return left < right;
202
+ case ">":
203
+ return left > right;
204
+ }
205
+ }
206
+ function profileKeysInWhen(when) {
207
+ return tokenize(when).filter((token) => token.kind === "profile").map((token) => token.key);
208
+ }
209
+ function assertWhenUsesClosedProfile(when) {
210
+ if (!when.trim()) {
211
+ throw new Error("empty when expression");
212
+ }
213
+ tokenize(when);
214
+ }
215
+ function assertProfileUsesClosedKeys(profile) {
216
+ for (const key of Object.keys(profile)) {
217
+ if (!PROFILE_KEY_SET.has(key)) {
218
+ throw new Error(`evalCases.profile has unknown key "${key}"`);
219
+ }
220
+ }
221
+ }
222
+ function evalWhen(when, profile) {
223
+ assertWhenUsesClosedProfile(when);
224
+ const parser = new Parser(tokenize(when), profile);
225
+ const value = parser.parseExpr();
226
+ parser.expectEnd();
227
+ return Boolean(value);
228
+ }
229
+ export {
230
+ assertProfileUsesClosedKeys,
231
+ assertWhenUsesClosedProfile,
232
+ evalWhen,
233
+ isDataProfileKey,
234
+ profileKeysInWhen
235
+ };
236
+ //# sourceMappingURL=when.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when.js","sources":["../../src/catalog/when.ts"],"sourcesContent":["import { DATA_PROFILE_KEYS, type DataProfile, type DataProfileKey } from './types.js';\n\nconst PROFILE_KEY_SET = new Set<string>(DATA_PROFILE_KEYS);\n\ntype CmpOp = '===' | '!==' | '<=' | '>=' | '<' | '>';\n\ntype Token =\n | { kind: 'profile'; key: DataProfileKey }\n | { kind: 'number'; value: number }\n | { kind: 'op'; op: '&&' | '||' | '!' | CmpOp }\n | { kind: 'lparen' }\n | { kind: 'rparen' };\n\nconst CMP_OPS: CmpOp[] = ['===', '!==', '<=', '>=', '<', '>'];\n\nfunction isDataProfileKey(key: string): key is DataProfileKey {\n return PROFILE_KEY_SET.has(key);\n}\n\nfunction tokenize(when: string): Token[] {\n const tokens: Token[] = [];\n let i = 0;\n const src = when;\n\n const skipWs = () => {\n while (i < src.length && /\\s/.test(src[i])) i += 1;\n };\n\n while (i < src.length) {\n skipWs();\n if (i >= src.length) break;\n\n if (src.startsWith('profile.', i)) {\n i += 'profile.'.length;\n const start = i;\n if (!/[A-Za-z]/.test(src[i] ?? '')) {\n throw new Error(`when: expected DataProfile key after profile. at ${start}`);\n }\n i += 1;\n while (i < src.length && /[A-Za-z0-9]/.test(src[i])) i += 1;\n const key = src.slice(start, i);\n if (!isDataProfileKey(key)) {\n throw new Error(`when references unknown DataProfile key \"${key}\"`);\n }\n skipWs();\n if (src[i] === '(') {\n throw new Error('when does not allow calls');\n }\n tokens.push({ kind: 'profile', key });\n continue;\n }\n\n if (src.startsWith('&&', i)) {\n tokens.push({ kind: 'op', op: '&&' });\n i += 2;\n continue;\n }\n if (src.startsWith('||', i)) {\n tokens.push({ kind: 'op', op: '||' });\n i += 2;\n continue;\n }\n if (src.startsWith('===', i)) {\n tokens.push({ kind: 'op', op: '===' });\n i += 3;\n continue;\n }\n if (src.startsWith('!==', i)) {\n tokens.push({ kind: 'op', op: '!==' });\n i += 3;\n continue;\n }\n if (src.startsWith('<=', i)) {\n tokens.push({ kind: 'op', op: '<=' });\n i += 2;\n continue;\n }\n if (src.startsWith('>=', i)) {\n tokens.push({ kind: 'op', op: '>=' });\n i += 2;\n continue;\n }\n if (src[i] === '<' || src[i] === '>') {\n tokens.push({ kind: 'op', op: src[i] as '<' | '>' });\n i += 1;\n continue;\n }\n if (src[i] === '!') {\n tokens.push({ kind: 'op', op: '!' });\n i += 1;\n continue;\n }\n if (src[i] === '(') {\n tokens.push({ kind: 'lparen' });\n i += 1;\n continue;\n }\n if (src[i] === ')') {\n tokens.push({ kind: 'rparen' });\n i += 1;\n continue;\n }\n\n if (src[i] === '-' || /[0-9]/.test(src[i])) {\n const start = i;\n if (src[i] === '-') i += 1;\n if (!/[0-9]/.test(src[i] ?? '')) {\n throw new Error(`when uses disallowed characters near \"${src.slice(start)}\"`);\n }\n while (i < src.length && /[0-9]/.test(src[i])) i += 1;\n if (src[i] === '.') {\n i += 1;\n if (!/[0-9]/.test(src[i] ?? '')) {\n throw new Error('when: number has a trailing dot');\n }\n while (i < src.length && /[0-9]/.test(src[i])) i += 1;\n }\n tokens.push({ kind: 'number', value: Number(src.slice(start, i)) });\n continue;\n }\n\n throw new Error(`when uses disallowed characters: ${src.slice(i)}`);\n }\n\n return tokens;\n}\n\nclass Parser {\n private pos = 0;\n\n constructor(\n private readonly tokens: Token[],\n private readonly profile: DataProfile,\n ) {}\n\n private peek(): Token | undefined {\n return this.tokens[this.pos];\n }\n\n private peekOp(op: '&&' | '||' | '!' | CmpOp): boolean {\n const token = this.peek();\n return token?.kind === 'op' && token.op === op;\n }\n\n private take(): Token {\n const token = this.tokens[this.pos];\n if (!token) throw new Error('when: unexpected end of expression');\n this.pos += 1;\n return token;\n }\n\n expectEnd(): void {\n if (this.pos !== this.tokens.length) {\n throw new Error('when: unexpected trailing tokens');\n }\n }\n\n parseExpr(): unknown {\n return this.parseOr();\n }\n\n private parseOr(): unknown {\n let left = this.parseAnd();\n while (this.peekOp('||')) {\n this.take();\n const right = this.parseAnd();\n left = left || right;\n }\n return left;\n }\n\n private parseAnd(): unknown {\n let left = this.parseComparison();\n while (this.peekOp('&&')) {\n this.take();\n const right = this.parseComparison();\n left = left && right;\n }\n return left;\n }\n\n private parseComparison(): unknown {\n const left = this.parseUnary();\n const next = this.peek();\n if (next?.kind === 'op' && (CMP_OPS as string[]).includes(next.op)) {\n const op = next.op as CmpOp;\n this.take();\n const right = this.parseUnary();\n return compare(op, left, right);\n }\n return left;\n }\n\n private parseUnary(): unknown {\n const next = this.peek();\n if (next?.kind === 'op' && next.op === '!') {\n this.take();\n return !this.parseUnary();\n }\n return this.parsePrimary();\n }\n\n private parsePrimary(): unknown {\n const token = this.take();\n if (token.kind === 'profile') {\n return this.profile[token.key];\n }\n if (token.kind === 'number') {\n return token.value;\n }\n if (token.kind === 'lparen') {\n const inner = this.parseExpr();\n const close = this.take();\n if (close.kind !== 'rparen') {\n throw new Error('when: expected closing parenthesis');\n }\n return inner;\n }\n throw new Error('when: expected profile key, number, or grouped expression');\n }\n}\n\nfunction compare(op: CmpOp, left: unknown, right: unknown): boolean {\n switch (op) {\n case '===':\n return left === right;\n case '!==':\n return left !== right;\n case '<=':\n return (left as number) <= (right as number);\n case '>=':\n return (left as number) >= (right as number);\n case '<':\n return (left as number) < (right as number);\n case '>':\n return (left as number) > (right as number);\n }\n}\n\n/** Pull `profile.<key>` identifiers out of a `when` string. */\nexport function profileKeysInWhen(when: string): string[] {\n return tokenize(when)\n .filter((token): token is Extract<Token, { kind: 'profile' }> => token.kind === 'profile')\n .map((token) => token.key);\n}\n\nexport function assertWhenUsesClosedProfile(when: string): void {\n if (!when.trim()) {\n throw new Error('empty when expression');\n }\n tokenize(when);\n}\n\nexport function assertProfileUsesClosedKeys(profile: DataProfile): void {\n for (const key of Object.keys(profile)) {\n if (!PROFILE_KEY_SET.has(key)) {\n throw new Error(`evalCases.profile has unknown key \"${key}\"`);\n }\n }\n}\n\n/**\n * Evaluate a catalog `when` string against a profile.\n * Only `profile.<DataProfileKey>`, numbers, && || ! comparisons, and grouping.\n */\nexport function evalWhen(when: string, profile: DataProfile): boolean {\n assertWhenUsesClosedProfile(when);\n const parser = new Parser(tokenize(when), profile);\n const value = parser.parseExpr();\n parser.expectEnd();\n return Boolean(value);\n}\n\nexport { isDataProfileKey };\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { LitElement, PropertyValues } from 'lit';
2
+ export declare class Ui9000ApprovalBar extends LitElement {
3
+ static styles: import('lit').CSSResult;
4
+ dataJson: string;
5
+ private _model;
6
+ private refresh;
7
+ connectedCallback(): void;
8
+ willUpdate(changed: PropertyValues): void;
9
+ render(): import('lit-html').TemplateResult<1>;
10
+ }
11
+ export declare function registerApprovalBar(): void;
12
+ declare global {
13
+ interface HTMLElementTagNameMap {
14
+ 'ui9000-approval-bar': Ui9000ApprovalBar;
15
+ }
16
+ }
17
+ //# sourceMappingURL=ui9000-approval-bar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui9000-approval-bar.d.ts","sourceRoot":"","sources":["../../../../src/components/approval-bar/element/ui9000-approval-bar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAQ5D,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,OAAgB,MAAM,0BAAiB;IAGvC,QAAQ,SAAQ;IAGhB,OAAO,CAAC,MAAM,CAA8B;IAE5C,OAAO,CAAC,OAAO;IAIN,iBAAiB,IAAI,IAAI;IAKzB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAIzC,MAAM;CA8BhB;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAI1C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,iBAAiB,CAAC;KAC1C;CACF"}
@@ -0,0 +1,83 @@
1
+ import { LitElement, html } from "lit";
2
+ import { property, state, customElement } from "lit/decorators.js";
3
+ import { dispatchUi9000Action } from "../../../element/dispatch-ui9000.js";
4
+ import { surfaceStyles } from "../../../element/surface-styles.js";
5
+ import { parseJsonAttr } from "../../../utils/chart-helpers.js";
6
+ import { normalizeApproval } from "../lib/normalize.js";
7
+ var __defProp = Object.defineProperty;
8
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
9
+ var __decorateClass = (decorators, target, key, kind) => {
10
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
11
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
12
+ if (decorator = decorators[i])
13
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
14
+ if (kind && result) __defProp(target, key, result);
15
+ return result;
16
+ };
17
+ let Ui9000ApprovalBar = class extends LitElement {
18
+ constructor() {
19
+ super(...arguments);
20
+ this.dataJson = "{}";
21
+ this._model = null;
22
+ }
23
+ refresh() {
24
+ this._model = normalizeApproval(parseJsonAttr(this.dataJson, null));
25
+ }
26
+ connectedCallback() {
27
+ super.connectedCallback();
28
+ this.refresh();
29
+ }
30
+ willUpdate(changed) {
31
+ if (changed.has("dataJson")) this.refresh();
32
+ }
33
+ render() {
34
+ const model = this._model;
35
+ if (!model) {
36
+ return html`<p class="blocked" role="status">Proposal required</p>`;
37
+ }
38
+ return html`
39
+ <div class="root" role="region" aria-label="Approval">
40
+ <p>${model.proposal}</p>
41
+ <p class="muted">Displayed only — this host does not execute the action.</p>
42
+ <p class="muted">Status: ${model.status}</p>
43
+ <div class="actions">
44
+ <button
45
+ class="btn"
46
+ data-kind="approve"
47
+ type="button"
48
+ @click=${() => dispatchUi9000Action(this, { type: "approve" })}
49
+ >
50
+ Approve
51
+ </button>
52
+ <button
53
+ class="btn"
54
+ type="button"
55
+ @click=${() => dispatchUi9000Action(this, { type: "reject" })}
56
+ >
57
+ Reject
58
+ </button>
59
+ </div>
60
+ </div>
61
+ `;
62
+ }
63
+ };
64
+ Ui9000ApprovalBar.styles = surfaceStyles;
65
+ __decorateClass([
66
+ property({ type: String, attribute: "data" })
67
+ ], Ui9000ApprovalBar.prototype, "dataJson", 2);
68
+ __decorateClass([
69
+ state()
70
+ ], Ui9000ApprovalBar.prototype, "_model", 2);
71
+ Ui9000ApprovalBar = __decorateClass([
72
+ customElement("ui9000-approval-bar")
73
+ ], Ui9000ApprovalBar);
74
+ function registerApprovalBar() {
75
+ if (!customElements.get("ui9000-approval-bar")) {
76
+ customElements.define("ui9000-approval-bar", Ui9000ApprovalBar);
77
+ }
78
+ }
79
+ export {
80
+ Ui9000ApprovalBar,
81
+ registerApprovalBar
82
+ };
83
+ //# sourceMappingURL=ui9000-approval-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui9000-approval-bar.js","sources":["../../../../src/components/approval-bar/element/ui9000-approval-bar.ts"],"sourcesContent":["import { html, LitElement, type PropertyValues } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport { dispatchUi9000Action } from '../../../element/dispatch-ui9000.js';\nimport { surfaceStyles } from '../../../element/surface-styles.js';\nimport { parseJsonAttr } from '../../../utils/chart-helpers.js';\nimport { normalizeApproval, type ApprovalModel } from '../lib/normalize.js';\n\n@customElement('ui9000-approval-bar')\nexport class Ui9000ApprovalBar extends LitElement {\n static override styles = surfaceStyles;\n\n @property({ type: String, attribute: 'data' })\n dataJson = '{}';\n\n @state()\n private _model: ApprovalModel | null = null;\n\n private refresh(): void {\n this._model = normalizeApproval(parseJsonAttr<unknown>(this.dataJson, null));\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.refresh();\n }\n\n override willUpdate(changed: PropertyValues): void {\n if (changed.has('dataJson')) this.refresh();\n }\n\n override render() {\n const model = this._model;\n if (!model) {\n return html`<p class=\"blocked\" role=\"status\">Proposal required</p>`;\n }\n return html`\n <div class=\"root\" role=\"region\" aria-label=\"Approval\">\n <p>${model.proposal}</p>\n <p class=\"muted\">Displayed only — this host does not execute the action.</p>\n <p class=\"muted\">Status: ${model.status}</p>\n <div class=\"actions\">\n <button\n class=\"btn\"\n data-kind=\"approve\"\n type=\"button\"\n @click=${() => dispatchUi9000Action(this, { type: 'approve' })}\n >\n Approve\n </button>\n <button\n class=\"btn\"\n type=\"button\"\n @click=${() => dispatchUi9000Action(this, { type: 'reject' })}\n >\n Reject\n </button>\n </div>\n </div>\n `;\n }\n}\n\nexport function registerApprovalBar(): void {\n if (!customElements.get('ui9000-approval-bar')) {\n customElements.define('ui9000-approval-bar', Ui9000ApprovalBar);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ui9000-approval-bar': Ui9000ApprovalBar;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AASO,IAAM,oBAAN,cAAgC,WAAW;AAAA,EAA3C,cAAA;AAAA,UAAA,GAAA,SAAA;AAIL,SAAA,WAAW;AAGX,SAAQ,SAA+B;AAAA,EAAA;AAAA,EAE/B,UAAgB;AACtB,SAAK,SAAS,kBAAkB,cAAuB,KAAK,UAAU,IAAI,CAAC;AAAA,EAC7E;AAAA,EAES,oBAA0B;AACjC,UAAM,kBAAA;AACN,SAAK,QAAA;AAAA,EACP;AAAA,EAES,WAAW,SAA+B;AACjD,QAAI,QAAQ,IAAI,UAAU,QAAQ,QAAA;AAAA,EACpC;AAAA,EAES,SAAS;AAChB,UAAM,QAAQ,KAAK;AACnB,QAAI,CAAC,OAAO;AACV,aAAO;AAAA,IACT;AACA,WAAO;AAAA;AAAA,aAEE,MAAM,QAAQ;AAAA;AAAA,mCAEQ,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAM1B,MAAM,qBAAqB,MAAM,EAAE,MAAM,UAAA,CAAW,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAOrD,MAAM,qBAAqB,MAAM,EAAE,MAAM,SAAA,CAAU,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOvE;AACF;AApDa,kBACK,SAAS;AAGzB,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,WAAW,QAAQ;AAAA,GAHlC,kBAIX,WAAA,YAAA,CAAA;AAGQ,gBAAA;AAAA,EADP,MAAA;AAAM,GANI,kBAOH,WAAA,UAAA,CAAA;AAPG,oBAAN,gBAAA;AAAA,EADN,cAAc,qBAAqB;AAAA,GACvB,iBAAA;AAsDN,SAAS,sBAA4B;AAC1C,MAAI,CAAC,eAAe,IAAI,qBAAqB,GAAG;AAC9C,mBAAe,OAAO,uBAAuB,iBAAiB;AAAA,EAChE;AACF;"}
@@ -0,0 +1,4 @@
1
+ export { Ui9000ApprovalBar, registerApprovalBar } from './element/ui9000-approval-bar.js';
2
+ export { normalizeApproval, type ApprovalModel } from './lib/normalize.js';
3
+ export { default as approvalBarMetadata } from './metadata.json';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/approval-bar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC1F,OAAO,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { registerApprovalBar } from "./element/ui9000-approval-bar.js";
2
+ import { Ui9000ApprovalBar } from "./element/ui9000-approval-bar.js";
3
+ import { normalizeApproval } from "./lib/normalize.js";
4
+ import { default as default2 } from "./metadata.json.js";
5
+ export {
6
+ Ui9000ApprovalBar,
7
+ default2 as approvalBarMetadata,
8
+ normalizeApproval,
9
+ registerApprovalBar
10
+ };
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,7 @@
1
+ export type ApprovalStatus = 'proposed' | 'approved' | 'rejected';
2
+ export type ApprovalModel = {
3
+ proposal: string;
4
+ status: ApprovalStatus;
5
+ };
6
+ export declare function normalizeApproval(raw: unknown): ApprovalModel | null;
7
+ //# sourceMappingURL=normalize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../../src/components/approval-bar/lib/normalize.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;AAElE,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,cAAc,CAAC;CACxB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CAUpE"}
@@ -0,0 +1,12 @@
1
+ function normalizeApproval(raw) {
2
+ if (!raw || typeof raw !== "object" || Array.isArray(raw)) return null;
3
+ const o = raw;
4
+ const proposal = typeof o.proposal === "string" ? o.proposal.trim() : "";
5
+ if (!proposal) return null;
6
+ const status = o.status === "approved" || o.status === "rejected" || o.status === "proposed" ? o.status : "proposed";
7
+ return { proposal, status };
8
+ }
9
+ export {
10
+ normalizeApproval
11
+ };
12
+ //# sourceMappingURL=normalize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.js","sources":["../../../../src/components/approval-bar/lib/normalize.ts"],"sourcesContent":["export type ApprovalStatus = 'proposed' | 'approved' | 'rejected';\n\nexport type ApprovalModel = {\n proposal: string;\n status: ApprovalStatus;\n};\n\nexport function normalizeApproval(raw: unknown): ApprovalModel | null {\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) return null;\n const o = raw as Record<string, unknown>;\n const proposal = typeof o.proposal === 'string' ? o.proposal.trim() : '';\n if (!proposal) return null;\n const status =\n o.status === 'approved' || o.status === 'rejected' || o.status === 'proposed'\n ? o.status\n : 'proposed';\n return { proposal, status };\n}\n"],"names":[],"mappings":"AAOO,SAAS,kBAAkB,KAAoC;AACpE,MAAI,CAAC,OAAO,OAAO,QAAQ,YAAY,MAAM,QAAQ,GAAG,EAAG,QAAO;AAClE,QAAM,IAAI;AACV,QAAM,WAAW,OAAO,EAAE,aAAa,WAAW,EAAE,SAAS,SAAS;AACtE,MAAI,CAAC,SAAU,QAAO;AACtB,QAAM,SACJ,EAAE,WAAW,cAAc,EAAE,WAAW,cAAc,EAAE,WAAW,aAC/D,EAAE,SACF;AACN,SAAO,EAAE,UAAU,OAAA;AACrB;"}
@@ -0,0 +1,99 @@
1
+ declare const _default: {
2
+ "id": "approval-bar",
3
+ "tag": "ui9000-approval-bar",
4
+ "title": "Approval Bar",
5
+ "description": "Propose / approve / reject. Displays only in a foreign host — does not execute.",
6
+ "chartTypeKeys": [],
7
+ "source": "ui9000-widgets Stage 2 close-out",
8
+ "stack": "lit",
9
+ "lazyImport": "@ui9000/widgets/lazy/approval-bar",
10
+ "entry": "@ui9000/widgets/approval-bar",
11
+ "usageConditions": {
12
+ "host": "mcp-chat",
13
+ "notFor": "fusedash-editor",
14
+ "mapsExcluded": true
15
+ },
16
+ "allowedActions": [
17
+ "approve",
18
+ "reject"
19
+ ],
20
+ "tier": "engine",
21
+ "intents": [
22
+ "form"
23
+ ],
24
+ "dataRoles": [
25
+ {
26
+ "id": "proposal",
27
+ "required": true,
28
+ "description": "The action being proposed."
29
+ }
30
+ ],
31
+ "eligibility": [
32
+ {
33
+ "when": "profile.hasClaim || profile.hasEntityId",
34
+ "reason": "Approval bar proposes an action on a claim or entity."
35
+ }
36
+ ],
37
+ "disqualify": [
38
+ {
39
+ "when": "!profile.hasClaim && !profile.hasEntityId",
40
+ "reason": "Without a claim or entity there is nothing to approve."
41
+ }
42
+ ],
43
+ "accessibility": {
44
+ "nameFrom": "proposal",
45
+ "keyboard": [
46
+ "Tab to Approve and Reject"
47
+ ],
48
+ "shadowBoundary": "Do not use aria-labelledby across the host; set aria-label on the host element."
49
+ },
50
+ "evalCases": [
51
+ {
52
+ "id": "approval-picks-claim",
53
+ "intent": "form",
54
+ "profile": {
55
+ "hasClaim": true
56
+ },
57
+ "expect": "eligible",
58
+ "reasonIncludes": "proposes"
59
+ },
60
+ {
61
+ "id": "approval-rejects-empty",
62
+ "intent": "form",
63
+ "profile": {
64
+ "hasClaim": false,
65
+ "hasEntityId": false
66
+ },
67
+ "expect": "disqualified",
68
+ "reasonIncludes": "nothing to approve"
69
+ }
70
+ ],
71
+ "propsSchema": {
72
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
73
+ "type": "object",
74
+ "properties": {
75
+ "data": {
76
+ "type": "object",
77
+ "properties": {
78
+ "proposal": {
79
+ "type": "string"
80
+ },
81
+ "status": {
82
+ "type": "string",
83
+ "enum": [
84
+ "proposed",
85
+ "approved",
86
+ "rejected"
87
+ ]
88
+ }
89
+ }
90
+ }
91
+ },
92
+ "required": [
93
+ "data"
94
+ ]
95
+ }
96
+ }
97
+ ;
98
+
99
+ export default _default;