@adminiumjs/adminium 0.1.0-rc.1

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 (875) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +94 -0
  3. package/dashboard/assets/DeltaPill-dxlsGh-1.js +2 -0
  4. package/dashboard/assets/DeltaPill-dxlsGh-1.js.map +1 -0
  5. package/dashboard/assets/DistributionCorrelationWidgets-ztVy_W_R.js +2 -0
  6. package/dashboard/assets/DistributionCorrelationWidgets-ztVy_W_R.js.map +1 -0
  7. package/dashboard/assets/PartWholeWidgets-BDn0i0jt.js +2 -0
  8. package/dashboard/assets/PartWholeWidgets-BDn0i0jt.js.map +1 -0
  9. package/dashboard/assets/RemapEditor-z3vRY12e.js +2 -0
  10. package/dashboard/assets/RemapEditor-z3vRY12e.js.map +1 -0
  11. package/dashboard/assets/ReviewScreen-COkLQ3T7.js +2 -0
  12. package/dashboard/assets/ReviewScreen-COkLQ3T7.js.map +1 -0
  13. package/dashboard/assets/Sparkline-Cvwo368J.js +2 -0
  14. package/dashboard/assets/Sparkline-Cvwo368J.js.map +1 -0
  15. package/dashboard/assets/WidgetMissingCard-D0bPJKIs.js +2 -0
  16. package/dashboard/assets/WidgetMissingCard-D0bPJKIs.js.map +1 -0
  17. package/dashboard/assets/arc-CPxb74pf.js +2 -0
  18. package/dashboard/assets/arc-CPxb74pf.js.map +1 -0
  19. package/dashboard/assets/bars-ranking-components-9Asn_0gR.js +2 -0
  20. package/dashboard/assets/bars-ranking-components-9Asn_0gR.js.map +1 -0
  21. package/dashboard/assets/blocks-track-components-BST-NjK2.js +2 -0
  22. package/dashboard/assets/blocks-track-components-BST-NjK2.js.map +1 -0
  23. package/dashboard/assets/calendar-track-components-RgNtGtZR.js +2 -0
  24. package/dashboard/assets/calendar-track-components-RgNtGtZR.js.map +1 -0
  25. package/dashboard/assets/chrome-track-components-ClNsentC.js +2 -0
  26. package/dashboard/assets/chrome-track-components-ClNsentC.js.map +1 -0
  27. package/dashboard/assets/common-BY1j__bD.js +2 -0
  28. package/dashboard/assets/common-BY1j__bD.js.map +1 -0
  29. package/dashboard/assets/common-BdlXKpcB.js +2 -0
  30. package/dashboard/assets/common-BdlXKpcB.js.map +1 -0
  31. package/dashboard/assets/common-BqqhgMgB.js +2 -0
  32. package/dashboard/assets/common-BqqhgMgB.js.map +1 -0
  33. package/dashboard/assets/common-BribWmIo.js +2 -0
  34. package/dashboard/assets/common-BribWmIo.js.map +1 -0
  35. package/dashboard/assets/common-Cmf0_lKV.js +2 -0
  36. package/dashboard/assets/common-Cmf0_lKV.js.map +1 -0
  37. package/dashboard/assets/common-i0r48qY9.js +2 -0
  38. package/dashboard/assets/common-i0r48qY9.js.map +1 -0
  39. package/dashboard/assets/common-x8cfkwpc.js +2 -0
  40. package/dashboard/assets/common-x8cfkwpc.js.map +1 -0
  41. package/dashboard/assets/communication-track-components-CNLZXOH_.js +2 -0
  42. package/dashboard/assets/communication-track-components-CNLZXOH_.js.map +1 -0
  43. package/dashboard/assets/components-Bp5cFm2d.js +2 -0
  44. package/dashboard/assets/components-Bp5cFm2d.js.map +1 -0
  45. package/dashboard/assets/components-C4-O3_gD.js +2 -0
  46. package/dashboard/assets/components-C4-O3_gD.js.map +1 -0
  47. package/dashboard/assets/domain-ops-track-components-BPa41AU7.js +2 -0
  48. package/dashboard/assets/domain-ops-track-components-BPa41AU7.js.map +1 -0
  49. package/dashboard/assets/domain-track-components-CQ1i1X1t.js +2 -0
  50. package/dashboard/assets/domain-track-components-CQ1i1X1t.js.map +1 -0
  51. package/dashboard/assets/errors-BHUWiAQ3.js +2 -0
  52. package/dashboard/assets/errors-BHUWiAQ3.js.map +1 -0
  53. package/dashboard/assets/errors-BbyKweDG.js +2 -0
  54. package/dashboard/assets/errors-BbyKweDG.js.map +1 -0
  55. package/dashboard/assets/errors-CMQ6JC31.js +2 -0
  56. package/dashboard/assets/errors-CMQ6JC31.js.map +1 -0
  57. package/dashboard/assets/errors-D3nVgTmf.js +2 -0
  58. package/dashboard/assets/errors-D3nVgTmf.js.map +1 -0
  59. package/dashboard/assets/errors-IqJSoANC.js +2 -0
  60. package/dashboard/assets/errors-IqJSoANC.js.map +1 -0
  61. package/dashboard/assets/errors-gmIkO9F6.js +2 -0
  62. package/dashboard/assets/errors-gmIkO9F6.js.map +1 -0
  63. package/dashboard/assets/errors-vFk058Vh.js +2 -0
  64. package/dashboard/assets/errors-vFk058Vh.js.map +1 -0
  65. package/dashboard/assets/feeds-track-f-components-Cl_8SkGs.js +2 -0
  66. package/dashboard/assets/feeds-track-f-components-Cl_8SkGs.js.map +1 -0
  67. package/dashboard/assets/format-Lx4cQ8k-.js +2 -0
  68. package/dashboard/assets/format-Lx4cQ8k-.js.map +1 -0
  69. package/dashboard/assets/forms-track-components-Bc2Hoxdh.js +2 -0
  70. package/dashboard/assets/forms-track-components-Bc2Hoxdh.js.map +1 -0
  71. package/dashboard/assets/generated-1EfWhCMA.js +2 -0
  72. package/dashboard/assets/generated-1EfWhCMA.js.map +1 -0
  73. package/dashboard/assets/generated-BB3ZMxvx.js +2 -0
  74. package/dashboard/assets/generated-BB3ZMxvx.js.map +1 -0
  75. package/dashboard/assets/generated-C0JVNBRX.js +2 -0
  76. package/dashboard/assets/generated-C0JVNBRX.js.map +1 -0
  77. package/dashboard/assets/generated-C1W48_-3.js +2 -0
  78. package/dashboard/assets/generated-C1W48_-3.js.map +1 -0
  79. package/dashboard/assets/generated-CluiB_xY.js +2 -0
  80. package/dashboard/assets/generated-CluiB_xY.js.map +1 -0
  81. package/dashboard/assets/generated-DDGtlf-4.js +2 -0
  82. package/dashboard/assets/generated-DDGtlf-4.js.map +1 -0
  83. package/dashboard/assets/generated-DPCHvNto.js +2 -0
  84. package/dashboard/assets/generated-DPCHvNto.js.map +1 -0
  85. package/dashboard/assets/geo-track-components-Ct4-MSRw.js +3 -0
  86. package/dashboard/assets/geo-track-components-Ct4-MSRw.js.map +1 -0
  87. package/dashboard/assets/ibm-plex-sans-arabic-arabic-400-normal-CyU-ddYS.woff2 +0 -0
  88. package/dashboard/assets/ibm-plex-sans-arabic-arabic-500-normal-C4MQITzh.woff2 +0 -0
  89. package/dashboard/assets/ibm-plex-sans-arabic-arabic-600-normal-0pRdybE_.woff2 +0 -0
  90. package/dashboard/assets/ibm-plex-sans-arabic-arabic-700-normal-DrtBj6UE.woff2 +0 -0
  91. package/dashboard/assets/index-DPi4cduu.css +1 -0
  92. package/dashboard/assets/index-PB1II0WV.js +137 -0
  93. package/dashboard/assets/index-PB1II0WV.js.map +1 -0
  94. package/dashboard/assets/jetbrains-mono-latin-ext-wght-italic-BrDczivE.woff2 +0 -0
  95. package/dashboard/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
  96. package/dashboard/assets/jetbrains-mono-latin-wght-italic-B2M6KQje.woff2 +0 -0
  97. package/dashboard/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
  98. package/dashboard/assets/leaflet-CIGW-MKW.css +1 -0
  99. package/dashboard/assets/leaflet-src-D12shr04.js +2 -0
  100. package/dashboard/assets/leaflet-src-D12shr04.js.map +1 -0
  101. package/dashboard/assets/manrope-latin-ext-wght-normal-Ch3YOpNY.woff2 +0 -0
  102. package/dashboard/assets/manrope-latin-wght-normal-DHIcAJRg.woff2 +0 -0
  103. package/dashboard/assets/media-track-components-CpeII-tT.js +2 -0
  104. package/dashboard/assets/media-track-components-CpeII-tT.js.map +1 -0
  105. package/dashboard/assets/scales-e0tkfEy1.js +2 -0
  106. package/dashboard/assets/scales-e0tkfEy1.js.map +1 -0
  107. package/dashboard/assets/sparkline-2JUGDrMW.js +2 -0
  108. package/dashboard/assets/sparkline-2JUGDrMW.js.map +1 -0
  109. package/dashboard/assets/stats-BNgXz5BD.js +2 -0
  110. package/dashboard/assets/stats-BNgXz5BD.js.map +1 -0
  111. package/dashboard/assets/studio-B7hMOwAF.js +2 -0
  112. package/dashboard/assets/studio-B7hMOwAF.js.map +1 -0
  113. package/dashboard/assets/studio-BN_9xHY3.js +2 -0
  114. package/dashboard/assets/studio-BN_9xHY3.js.map +1 -0
  115. package/dashboard/assets/studio-Cn2MObe8.js +2 -0
  116. package/dashboard/assets/studio-Cn2MObe8.js.map +1 -0
  117. package/dashboard/assets/studio-DZEZCCkw.js +2 -0
  118. package/dashboard/assets/studio-DZEZCCkw.js.map +1 -0
  119. package/dashboard/assets/studio-DzatTvLl.js +2 -0
  120. package/dashboard/assets/studio-DzatTvLl.js.map +1 -0
  121. package/dashboard/assets/studio-cBlD8x90.js +2 -0
  122. package/dashboard/assets/studio-cBlD8x90.js.map +1 -0
  123. package/dashboard/assets/studio-cglZPbJK.js +2 -0
  124. package/dashboard/assets/studio-cglZPbJK.js.map +1 -0
  125. package/dashboard/assets/system-track-components-GTYYpnfB.js +2 -0
  126. package/dashboard/assets/system-track-components-GTYYpnfB.js.map +1 -0
  127. package/dashboard/assets/tables-tail-components-DiA5GeHB.js +2 -0
  128. package/dashboard/assets/tables-tail-components-DiA5GeHB.js.map +1 -0
  129. package/dashboard/assets/tables-track-f-components-CVNPd7rq.js +2 -0
  130. package/dashboard/assets/tables-track-f-components-CVNPd7rq.js.map +1 -0
  131. package/dashboard/assets/time-flow-components-nKsaryry.js +2 -0
  132. package/dashboard/assets/time-flow-components-nKsaryry.js.map +1 -0
  133. package/dashboard/assets/ui-B-kZetor.js +2 -0
  134. package/dashboard/assets/ui-B-kZetor.js.map +1 -0
  135. package/dashboard/assets/ui-BEStJ5Pw.js +2 -0
  136. package/dashboard/assets/ui-BEStJ5Pw.js.map +1 -0
  137. package/dashboard/assets/ui-BS5_eDN4.js +2 -0
  138. package/dashboard/assets/ui-BS5_eDN4.js.map +1 -0
  139. package/dashboard/assets/ui-BZ0EyxRH.js +2 -0
  140. package/dashboard/assets/ui-BZ0EyxRH.js.map +1 -0
  141. package/dashboard/assets/ui-BloJDdt6.js +2 -0
  142. package/dashboard/assets/ui-BloJDdt6.js.map +1 -0
  143. package/dashboard/assets/ui-CpdrplJH.js +2 -0
  144. package/dashboard/assets/ui-CpdrplJH.js.map +1 -0
  145. package/dashboard/assets/ui-YJfT644k.js +2 -0
  146. package/dashboard/assets/ui-YJfT644k.js.map +1 -0
  147. package/dashboard/assets/widgets-uDqZWw4A.js +2 -0
  148. package/dashboard/assets/widgets-uDqZWw4A.js.map +1 -0
  149. package/dashboard/index.html +41 -0
  150. package/dist/app.d.ts +48 -0
  151. package/dist/app.d.ts.map +1 -0
  152. package/dist/app.js +250 -0
  153. package/dist/app.js.map +1 -0
  154. package/dist/auth/audit.d.ts +22 -0
  155. package/dist/auth/audit.d.ts.map +1 -0
  156. package/dist/auth/audit.js +17 -0
  157. package/dist/auth/audit.js.map +1 -0
  158. package/dist/auth/desktop-session.d.ts +53 -0
  159. package/dist/auth/desktop-session.d.ts.map +1 -0
  160. package/dist/auth/desktop-session.js +111 -0
  161. package/dist/auth/desktop-session.js.map +1 -0
  162. package/dist/auth/passwords.d.ts +17 -0
  163. package/dist/auth/passwords.d.ts.map +1 -0
  164. package/dist/auth/passwords.js +40 -0
  165. package/dist/auth/passwords.js.map +1 -0
  166. package/dist/auth/sessions.d.ts +77 -0
  167. package/dist/auth/sessions.d.ts.map +1 -0
  168. package/dist/auth/sessions.js +137 -0
  169. package/dist/auth/sessions.js.map +1 -0
  170. package/dist/auth/totp.d.ts +30 -0
  171. package/dist/auth/totp.d.ts.map +1 -0
  172. package/dist/auth/totp.js +97 -0
  173. package/dist/auth/totp.js.map +1 -0
  174. package/dist/backup/backup-service.d.ts +157 -0
  175. package/dist/backup/backup-service.d.ts.map +1 -0
  176. package/dist/backup/backup-service.js +354 -0
  177. package/dist/backup/backup-service.js.map +1 -0
  178. package/dist/backup/format.d.ts +300 -0
  179. package/dist/backup/format.d.ts.map +1 -0
  180. package/dist/backup/format.js +304 -0
  181. package/dist/backup/format.js.map +1 -0
  182. package/dist/backup/notify.d.ts +55 -0
  183. package/dist/backup/notify.d.ts.map +1 -0
  184. package/dist/backup/notify.js +60 -0
  185. package/dist/backup/notify.js.map +1 -0
  186. package/dist/backup/snapshot.d.ts +78 -0
  187. package/dist/backup/snapshot.d.ts.map +1 -0
  188. package/dist/backup/snapshot.js +142 -0
  189. package/dist/backup/snapshot.js.map +1 -0
  190. package/dist/capabilities/catalog.d.ts +33 -0
  191. package/dist/capabilities/catalog.d.ts.map +1 -0
  192. package/dist/capabilities/catalog.js +32 -0
  193. package/dist/capabilities/catalog.js.map +1 -0
  194. package/dist/capabilities/grants.d.ts +44 -0
  195. package/dist/capabilities/grants.d.ts.map +1 -0
  196. package/dist/capabilities/grants.js +65 -0
  197. package/dist/capabilities/grants.js.map +1 -0
  198. package/dist/cli/allowlist.d.ts +46 -0
  199. package/dist/cli/allowlist.d.ts.map +1 -0
  200. package/dist/cli/allowlist.js +99 -0
  201. package/dist/cli/allowlist.js.map +1 -0
  202. package/dist/cli/args.d.ts +63 -0
  203. package/dist/cli/args.d.ts.map +1 -0
  204. package/dist/cli/args.js +92 -0
  205. package/dist/cli/args.js.map +1 -0
  206. package/dist/cli/command.d.ts +32 -0
  207. package/dist/cli/command.d.ts.map +1 -0
  208. package/dist/cli/command.js +64 -0
  209. package/dist/cli/command.js.map +1 -0
  210. package/dist/cli/commands/apply-llm-response.d.ts +32 -0
  211. package/dist/cli/commands/apply-llm-response.d.ts.map +1 -0
  212. package/dist/cli/commands/apply-llm-response.js +209 -0
  213. package/dist/cli/commands/apply-llm-response.js.map +1 -0
  214. package/dist/cli/commands/export-zip.d.ts +17 -0
  215. package/dist/cli/commands/export-zip.d.ts.map +1 -0
  216. package/dist/cli/commands/export-zip.js +111 -0
  217. package/dist/cli/commands/export-zip.js.map +1 -0
  218. package/dist/cli/commands/generate-prompt.d.ts +29 -0
  219. package/dist/cli/commands/generate-prompt.d.ts.map +1 -0
  220. package/dist/cli/commands/generate-prompt.js +154 -0
  221. package/dist/cli/commands/generate-prompt.js.map +1 -0
  222. package/dist/cli/commands/import-zip.d.ts +13 -0
  223. package/dist/cli/commands/import-zip.d.ts.map +1 -0
  224. package/dist/cli/commands/import-zip.js +95 -0
  225. package/dist/cli/commands/import-zip.js.map +1 -0
  226. package/dist/cli/commands/init.d.ts +47 -0
  227. package/dist/cli/commands/init.d.ts.map +1 -0
  228. package/dist/cli/commands/init.js +372 -0
  229. package/dist/cli/commands/init.js.map +1 -0
  230. package/dist/cli/commands/introspect.d.ts +11 -0
  231. package/dist/cli/commands/introspect.d.ts.map +1 -0
  232. package/dist/cli/commands/introspect.js +100 -0
  233. package/dist/cli/commands/introspect.js.map +1 -0
  234. package/dist/cli/commands/migrate.d.ts +11 -0
  235. package/dist/cli/commands/migrate.d.ts.map +1 -0
  236. package/dist/cli/commands/migrate.js +80 -0
  237. package/dist/cli/commands/migrate.js.map +1 -0
  238. package/dist/cli/commands/start.d.ts +22 -0
  239. package/dist/cli/commands/start.d.ts.map +1 -0
  240. package/dist/cli/commands/start.js +101 -0
  241. package/dist/cli/commands/start.js.map +1 -0
  242. package/dist/cli/exit.d.ts +37 -0
  243. package/dist/cli/exit.d.ts.map +1 -0
  244. package/dist/cli/exit.js +39 -0
  245. package/dist/cli/exit.js.map +1 -0
  246. package/dist/cli/index.d.ts +10 -0
  247. package/dist/cli/index.d.ts.map +1 -0
  248. package/dist/cli/index.js +17 -0
  249. package/dist/cli/index.js.map +1 -0
  250. package/dist/cli/io.d.ts +49 -0
  251. package/dist/cli/io.d.ts.map +1 -0
  252. package/dist/cli/io.js +77 -0
  253. package/dist/cli/io.js.map +1 -0
  254. package/dist/cli/run.d.ts +35 -0
  255. package/dist/cli/run.d.ts.map +1 -0
  256. package/dist/cli/run.js +139 -0
  257. package/dist/cli/run.js.map +1 -0
  258. package/dist/cli/runtime.d.ts +116 -0
  259. package/dist/cli/runtime.d.ts.map +1 -0
  260. package/dist/cli/runtime.js +181 -0
  261. package/dist/cli/runtime.js.map +1 -0
  262. package/dist/cli/static-root.d.ts +42 -0
  263. package/dist/cli/static-root.d.ts.map +1 -0
  264. package/dist/cli/static-root.js +58 -0
  265. package/dist/cli/static-root.js.map +1 -0
  266. package/dist/compose.d.ts +135 -0
  267. package/dist/compose.d.ts.map +1 -0
  268. package/dist/compose.js +383 -0
  269. package/dist/compose.js.map +1 -0
  270. package/dist/config/bootstrap.d.ts +33 -0
  271. package/dist/config/bootstrap.d.ts.map +1 -0
  272. package/dist/config/bootstrap.js +81 -0
  273. package/dist/config/bootstrap.js.map +1 -0
  274. package/dist/config/env.d.ts +95 -0
  275. package/dist/config/env.d.ts.map +1 -0
  276. package/dist/config/env.js +236 -0
  277. package/dist/config/env.js.map +1 -0
  278. package/dist/config/secrets.d.ts +24 -0
  279. package/dist/config/secrets.d.ts.map +1 -0
  280. package/dist/config/secrets.js +74 -0
  281. package/dist/config/secrets.js.map +1 -0
  282. package/dist/connections/crypto.d.ts +9 -0
  283. package/dist/connections/crypto.d.ts.map +1 -0
  284. package/dist/connections/crypto.js +16 -0
  285. package/dist/connections/crypto.js.map +1 -0
  286. package/dist/connections/dsn.d.ts +42 -0
  287. package/dist/connections/dsn.d.ts.map +1 -0
  288. package/dist/connections/dsn.js +131 -0
  289. package/dist/connections/dsn.js.map +1 -0
  290. package/dist/connections/effective-schema.d.ts +65 -0
  291. package/dist/connections/effective-schema.d.ts.map +1 -0
  292. package/dist/connections/effective-schema.js +249 -0
  293. package/dist/connections/effective-schema.js.map +1 -0
  294. package/dist/connections/introspect.d.ts +52 -0
  295. package/dist/connections/introspect.d.ts.map +1 -0
  296. package/dist/connections/introspect.js +111 -0
  297. package/dist/connections/introspect.js.map +1 -0
  298. package/dist/connections/manager.d.ts +97 -0
  299. package/dist/connections/manager.d.ts.map +1 -0
  300. package/dist/connections/manager.js +224 -0
  301. package/dist/connections/manager.js.map +1 -0
  302. package/dist/connections/register-adapters.d.ts +42 -0
  303. package/dist/connections/register-adapters.d.ts.map +1 -0
  304. package/dist/connections/register-adapters.js +92 -0
  305. package/dist/connections/register-adapters.js.map +1 -0
  306. package/dist/crud/filters.d.ts +57 -0
  307. package/dist/crud/filters.d.ts.map +1 -0
  308. package/dist/crud/filters.js +177 -0
  309. package/dist/crud/filters.js.map +1 -0
  310. package/dist/crud/identifiers.d.ts +58 -0
  311. package/dist/crud/identifiers.d.ts.map +1 -0
  312. package/dist/crud/identifiers.js +99 -0
  313. package/dist/crud/identifiers.js.map +1 -0
  314. package/dist/crud/list.d.ts +51 -0
  315. package/dist/crud/list.d.ts.map +1 -0
  316. package/dist/crud/list.js +126 -0
  317. package/dist/crud/list.js.map +1 -0
  318. package/dist/crud/mask.d.ts +23 -0
  319. package/dist/crud/mask.d.ts.map +1 -0
  320. package/dist/crud/mask.js +41 -0
  321. package/dist/crud/mask.js.map +1 -0
  322. package/dist/crud/records.d.ts +33 -0
  323. package/dist/crud/records.d.ts.map +1 -0
  324. package/dist/crud/records.js +126 -0
  325. package/dist/crud/records.js.map +1 -0
  326. package/dist/crud/undo.d.ts +55 -0
  327. package/dist/crud/undo.d.ts.map +1 -0
  328. package/dist/crud/undo.js +74 -0
  329. package/dist/crud/undo.js.map +1 -0
  330. package/dist/data-io/coerce.d.ts +28 -0
  331. package/dist/data-io/coerce.d.ts.map +1 -0
  332. package/dist/data-io/coerce.js +123 -0
  333. package/dist/data-io/coerce.js.map +1 -0
  334. package/dist/data-io/csv.d.ts +38 -0
  335. package/dist/data-io/csv.d.ts.map +1 -0
  336. package/dist/data-io/csv.js +138 -0
  337. package/dist/data-io/csv.js.map +1 -0
  338. package/dist/data-io/snapshot-view.d.ts +10 -0
  339. package/dist/data-io/snapshot-view.d.ts.map +1 -0
  340. package/dist/data-io/snapshot-view.js +19 -0
  341. package/dist/data-io/snapshot-view.js.map +1 -0
  342. package/dist/desktop/demo-seed.d.ts +23 -0
  343. package/dist/desktop/demo-seed.d.ts.map +1 -0
  344. package/dist/desktop/demo-seed.js +28 -0
  345. package/dist/desktop/demo-seed.js.map +1 -0
  346. package/dist/desktop/lan-share.d.ts +94 -0
  347. package/dist/desktop/lan-share.d.ts.map +1 -0
  348. package/dist/desktop/lan-share.js +150 -0
  349. package/dist/desktop/lan-share.js.map +1 -0
  350. package/dist/errors.d.ts +72 -0
  351. package/dist/errors.d.ts.map +1 -0
  352. package/dist/errors.js +82 -0
  353. package/dist/errors.js.map +1 -0
  354. package/dist/export/bundle.d.ts +235 -0
  355. package/dist/export/bundle.d.ts.map +1 -0
  356. package/dist/export/bundle.js +172 -0
  357. package/dist/export/bundle.js.map +1 -0
  358. package/dist/export/import-service.d.ts +99 -0
  359. package/dist/export/import-service.d.ts.map +1 -0
  360. package/dist/export/import-service.js +515 -0
  361. package/dist/export/import-service.js.map +1 -0
  362. package/dist/export/readme.d.ts +25 -0
  363. package/dist/export/readme.d.ts.map +1 -0
  364. package/dist/export/readme.js +154 -0
  365. package/dist/export/readme.js.map +1 -0
  366. package/dist/export/redaction.d.ts +118 -0
  367. package/dist/export/redaction.d.ts.map +1 -0
  368. package/dist/export/redaction.js +233 -0
  369. package/dist/export/redaction.js.map +1 -0
  370. package/dist/export/zip-service.d.ts +66 -0
  371. package/dist/export/zip-service.d.ts.map +1 -0
  372. package/dist/export/zip-service.js +306 -0
  373. package/dist/export/zip-service.js.map +1 -0
  374. package/dist/files/storage.d.ts +50 -0
  375. package/dist/files/storage.d.ts.map +1 -0
  376. package/dist/files/storage.js +100 -0
  377. package/dist/files/storage.js.map +1 -0
  378. package/dist/generate/materialize-llm.d.ts +45 -0
  379. package/dist/generate/materialize-llm.d.ts.map +1 -0
  380. package/dist/generate/materialize-llm.js +167 -0
  381. package/dist/generate/materialize-llm.js.map +1 -0
  382. package/dist/generate/run.d.ts +48 -0
  383. package/dist/generate/run.d.ts.map +1 -0
  384. package/dist/generate/run.js +123 -0
  385. package/dist/generate/run.js.map +1 -0
  386. package/dist/index.d.ts +89 -0
  387. package/dist/index.d.ts.map +1 -0
  388. package/dist/index.js +116 -0
  389. package/dist/index.js.map +1 -0
  390. package/dist/jobs/export-run.d.ts +38 -0
  391. package/dist/jobs/export-run.d.ts.map +1 -0
  392. package/dist/jobs/export-run.js +172 -0
  393. package/dist/jobs/export-run.js.map +1 -0
  394. package/dist/jobs/import-run.d.ts +43 -0
  395. package/dist/jobs/import-run.d.ts.map +1 -0
  396. package/dist/jobs/import-run.js +290 -0
  397. package/dist/jobs/import-run.js.map +1 -0
  398. package/dist/jobs/llm-run.d.ts +73 -0
  399. package/dist/jobs/llm-run.d.ts.map +1 -0
  400. package/dist/jobs/llm-run.js +225 -0
  401. package/dist/jobs/llm-run.js.map +1 -0
  402. package/dist/jobs/register.d.ts +90 -0
  403. package/dist/jobs/register.d.ts.map +1 -0
  404. package/dist/jobs/register.js +121 -0
  405. package/dist/jobs/register.js.map +1 -0
  406. package/dist/jobs/registry.d.ts +74 -0
  407. package/dist/jobs/registry.d.ts.map +1 -0
  408. package/dist/jobs/registry.js +78 -0
  409. package/dist/jobs/registry.js.map +1 -0
  410. package/dist/jobs/report-run.d.ts +64 -0
  411. package/dist/jobs/report-run.d.ts.map +1 -0
  412. package/dist/jobs/report-run.js +221 -0
  413. package/dist/jobs/report-run.js.map +1 -0
  414. package/dist/jobs/scheduler.d.ts +72 -0
  415. package/dist/jobs/scheduler.d.ts.map +1 -0
  416. package/dist/jobs/scheduler.js +121 -0
  417. package/dist/jobs/scheduler.js.map +1 -0
  418. package/dist/jobs/worker.d.ts +110 -0
  419. package/dist/jobs/worker.d.ts.map +1 -0
  420. package/dist/jobs/worker.js +282 -0
  421. package/dist/jobs/worker.js.map +1 -0
  422. package/dist/llm/apply-service.d.ts +150 -0
  423. package/dist/llm/apply-service.d.ts.map +1 -0
  424. package/dist/llm/apply-service.js +463 -0
  425. package/dist/llm/apply-service.js.map +1 -0
  426. package/dist/llm/apply-undo-store.d.ts +50 -0
  427. package/dist/llm/apply-undo-store.d.ts.map +1 -0
  428. package/dist/llm/apply-undo-store.js +60 -0
  429. package/dist/llm/apply-undo-store.js.map +1 -0
  430. package/dist/llm/direct-runner.d.ts +146 -0
  431. package/dist/llm/direct-runner.d.ts.map +1 -0
  432. package/dist/llm/direct-runner.js +204 -0
  433. package/dist/llm/direct-runner.js.map +1 -0
  434. package/dist/llm/prompt-service.d.ts +90 -0
  435. package/dist/llm/prompt-service.d.ts.map +1 -0
  436. package/dist/llm/prompt-service.js +93 -0
  437. package/dist/llm/prompt-service.js.map +1 -0
  438. package/dist/llm/provider-resolver.d.ts +25 -0
  439. package/dist/llm/provider-resolver.d.ts.map +1 -0
  440. package/dist/llm/provider-resolver.js +81 -0
  441. package/dist/llm/provider-resolver.js.map +1 -0
  442. package/dist/llm/run-service.d.ts +215 -0
  443. package/dist/llm/run-service.d.ts.map +1 -0
  444. package/dist/llm/run-service.js +343 -0
  445. package/dist/llm/run-service.js.map +1 -0
  446. package/dist/llm/stats-collector.d.ts +40 -0
  447. package/dist/llm/stats-collector.d.ts.map +1 -0
  448. package/dist/llm/stats-collector.js +74 -0
  449. package/dist/llm/stats-collector.js.map +1 -0
  450. package/dist/log-scrub.d.ts +58 -0
  451. package/dist/log-scrub.d.ts.map +1 -0
  452. package/dist/log-scrub.js +103 -0
  453. package/dist/log-scrub.js.map +1 -0
  454. package/dist/meta/store.d.ts +96 -0
  455. package/dist/meta/store.d.ts.map +1 -0
  456. package/dist/meta/store.js +192 -0
  457. package/dist/meta/store.js.map +1 -0
  458. package/dist/notifications/notify.d.ts +43 -0
  459. package/dist/notifications/notify.d.ts.map +1 -0
  460. package/dist/notifications/notify.js +42 -0
  461. package/dist/notifications/notify.js.map +1 -0
  462. package/dist/plugins/auth.d.ts +42 -0
  463. package/dist/plugins/auth.d.ts.map +1 -0
  464. package/dist/plugins/auth.js +84 -0
  465. package/dist/plugins/auth.js.map +1 -0
  466. package/dist/plugins/core.d.ts +48 -0
  467. package/dist/plugins/core.d.ts.map +1 -0
  468. package/dist/plugins/core.js +248 -0
  469. package/dist/plugins/core.js.map +1 -0
  470. package/dist/plugins/rbac.d.ts +54 -0
  471. package/dist/plugins/rbac.d.ts.map +1 -0
  472. package/dist/plugins/rbac.js +103 -0
  473. package/dist/plugins/rbac.js.map +1 -0
  474. package/dist/plugins/static.d.ts +12 -0
  475. package/dist/plugins/static.d.ts.map +1 -0
  476. package/dist/plugins/static.js +36 -0
  477. package/dist/plugins/static.js.map +1 -0
  478. package/dist/rbac/api-keys.d.ts +30 -0
  479. package/dist/rbac/api-keys.d.ts.map +1 -0
  480. package/dist/rbac/api-keys.js +41 -0
  481. package/dist/rbac/api-keys.js.map +1 -0
  482. package/dist/rbac/index.d.ts +6 -0
  483. package/dist/rbac/index.d.ts.map +1 -0
  484. package/dist/rbac/index.js +6 -0
  485. package/dist/rbac/index.js.map +1 -0
  486. package/dist/rbac/permissions.d.ts +107 -0
  487. package/dist/rbac/permissions.d.ts.map +1 -0
  488. package/dist/rbac/permissions.js +250 -0
  489. package/dist/rbac/permissions.js.map +1 -0
  490. package/dist/rbac/principal.d.ts +33 -0
  491. package/dist/rbac/principal.d.ts.map +1 -0
  492. package/dist/rbac/principal.js +31 -0
  493. package/dist/rbac/principal.js.map +1 -0
  494. package/dist/rbac/resolver.d.ts +26 -0
  495. package/dist/rbac/resolver.d.ts.map +1 -0
  496. package/dist/rbac/resolver.js +46 -0
  497. package/dist/rbac/resolver.js.map +1 -0
  498. package/dist/realtime/hub.d.ts +90 -0
  499. package/dist/realtime/hub.d.ts.map +1 -0
  500. package/dist/realtime/hub.js +146 -0
  501. package/dist/realtime/hub.js.map +1 -0
  502. package/dist/realtime/sse.d.ts +35 -0
  503. package/dist/realtime/sse.d.ts.map +1 -0
  504. package/dist/realtime/sse.js +88 -0
  505. package/dist/realtime/sse.js.map +1 -0
  506. package/dist/realtime/ws.d.ts +38 -0
  507. package/dist/realtime/ws.d.ts.map +1 -0
  508. package/dist/realtime/ws.js +124 -0
  509. package/dist/realtime/ws.js.map +1 -0
  510. package/dist/reports/schedule.d.ts +14 -0
  511. package/dist/reports/schedule.d.ts.map +1 -0
  512. package/dist/reports/schedule.js +63 -0
  513. package/dist/reports/schedule.js.map +1 -0
  514. package/dist/routes/about/index.d.ts +39 -0
  515. package/dist/routes/about/index.d.ts.map +1 -0
  516. package/dist/routes/about/index.js +73 -0
  517. package/dist/routes/about/index.js.map +1 -0
  518. package/dist/routes/about/schema.d.ts +50 -0
  519. package/dist/routes/about/schema.d.ts.map +1 -0
  520. package/dist/routes/about/schema.js +53 -0
  521. package/dist/routes/about/schema.js.map +1 -0
  522. package/dist/routes/api-keys/index.d.ts +11 -0
  523. package/dist/routes/api-keys/index.d.ts.map +1 -0
  524. package/dist/routes/api-keys/index.js +79 -0
  525. package/dist/routes/api-keys/index.js.map +1 -0
  526. package/dist/routes/api-keys/schema.d.ts +62 -0
  527. package/dist/routes/api-keys/schema.d.ts.map +1 -0
  528. package/dist/routes/api-keys/schema.js +37 -0
  529. package/dist/routes/api-keys/schema.js.map +1 -0
  530. package/dist/routes/audit/index.d.ts +11 -0
  531. package/dist/routes/audit/index.d.ts.map +1 -0
  532. package/dist/routes/audit/index.js +107 -0
  533. package/dist/routes/audit/index.js.map +1 -0
  534. package/dist/routes/audit/schema.d.ts +129 -0
  535. package/dist/routes/audit/schema.d.ts.map +1 -0
  536. package/dist/routes/audit/schema.js +43 -0
  537. package/dist/routes/audit/schema.js.map +1 -0
  538. package/dist/routes/auth/desktop-session.d.ts +48 -0
  539. package/dist/routes/auth/desktop-session.d.ts.map +1 -0
  540. package/dist/routes/auth/desktop-session.js +132 -0
  541. package/dist/routes/auth/desktop-session.js.map +1 -0
  542. package/dist/routes/auth/handlers.d.ts +21 -0
  543. package/dist/routes/auth/handlers.d.ts.map +1 -0
  544. package/dist/routes/auth/handlers.js +256 -0
  545. package/dist/routes/auth/handlers.js.map +1 -0
  546. package/dist/routes/auth/index.d.ts +27 -0
  547. package/dist/routes/auth/index.d.ts.map +1 -0
  548. package/dist/routes/auth/index.js +67 -0
  549. package/dist/routes/auth/index.js.map +1 -0
  550. package/dist/routes/auth/schema.d.ts +129 -0
  551. package/dist/routes/auth/schema.d.ts.map +1 -0
  552. package/dist/routes/auth/schema.js +84 -0
  553. package/dist/routes/auth/schema.js.map +1 -0
  554. package/dist/routes/bootstrap/handlers.d.ts +34 -0
  555. package/dist/routes/bootstrap/handlers.d.ts.map +1 -0
  556. package/dist/routes/bootstrap/handlers.js +96 -0
  557. package/dist/routes/bootstrap/handlers.js.map +1 -0
  558. package/dist/routes/bootstrap/index.d.ts +9 -0
  559. package/dist/routes/bootstrap/index.d.ts.map +1 -0
  560. package/dist/routes/bootstrap/index.js +16 -0
  561. package/dist/routes/bootstrap/index.js.map +1 -0
  562. package/dist/routes/bootstrap/schema.d.ts +177 -0
  563. package/dist/routes/bootstrap/schema.d.ts.map +1 -0
  564. package/dist/routes/bootstrap/schema.js +55 -0
  565. package/dist/routes/bootstrap/schema.js.map +1 -0
  566. package/dist/routes/connections/index.d.ts +21 -0
  567. package/dist/routes/connections/index.d.ts.map +1 -0
  568. package/dist/routes/connections/index.js +260 -0
  569. package/dist/routes/connections/index.js.map +1 -0
  570. package/dist/routes/connections/schema.d.ts +161 -0
  571. package/dist/routes/connections/schema.d.ts.map +1 -0
  572. package/dist/routes/connections/schema.js +91 -0
  573. package/dist/routes/connections/schema.js.map +1 -0
  574. package/dist/routes/data/index.d.ts +46 -0
  575. package/dist/routes/data/index.d.ts.map +1 -0
  576. package/dist/routes/data/index.js +508 -0
  577. package/dist/routes/data/index.js.map +1 -0
  578. package/dist/routes/data/schema.d.ts +128 -0
  579. package/dist/routes/data/schema.d.ts.map +1 -0
  580. package/dist/routes/data/schema.js +83 -0
  581. package/dist/routes/data/schema.js.map +1 -0
  582. package/dist/routes/desktop/index.d.ts +61 -0
  583. package/dist/routes/desktop/index.d.ts.map +1 -0
  584. package/dist/routes/desktop/index.js +91 -0
  585. package/dist/routes/desktop/index.js.map +1 -0
  586. package/dist/routes/desktop/schema.d.ts +71 -0
  587. package/dist/routes/desktop/schema.d.ts.map +1 -0
  588. package/dist/routes/desktop/schema.js +58 -0
  589. package/dist/routes/desktop/schema.js.map +1 -0
  590. package/dist/routes/desktop-capabilities/index.d.ts +9 -0
  591. package/dist/routes/desktop-capabilities/index.d.ts.map +1 -0
  592. package/dist/routes/desktop-capabilities/index.js +62 -0
  593. package/dist/routes/desktop-capabilities/index.js.map +1 -0
  594. package/dist/routes/desktop-capabilities/schema.d.ts +46 -0
  595. package/dist/routes/desktop-capabilities/schema.d.ts.map +1 -0
  596. package/dist/routes/desktop-capabilities/schema.js +30 -0
  597. package/dist/routes/desktop-capabilities/schema.js.map +1 -0
  598. package/dist/routes/desktop-demo/handlers.d.ts +94 -0
  599. package/dist/routes/desktop-demo/handlers.d.ts.map +1 -0
  600. package/dist/routes/desktop-demo/handlers.js +182 -0
  601. package/dist/routes/desktop-demo/handlers.js.map +1 -0
  602. package/dist/routes/desktop-demo/index.d.ts +39 -0
  603. package/dist/routes/desktop-demo/index.d.ts.map +1 -0
  604. package/dist/routes/desktop-demo/index.js +73 -0
  605. package/dist/routes/desktop-demo/index.js.map +1 -0
  606. package/dist/routes/desktop-demo/schema.d.ts +17 -0
  607. package/dist/routes/desktop-demo/schema.d.ts.map +1 -0
  608. package/dist/routes/desktop-demo/schema.js +30 -0
  609. package/dist/routes/desktop-demo/schema.js.map +1 -0
  610. package/dist/routes/desktop-lan/index.d.ts +54 -0
  611. package/dist/routes/desktop-lan/index.d.ts.map +1 -0
  612. package/dist/routes/desktop-lan/index.js +33 -0
  613. package/dist/routes/desktop-lan/index.js.map +1 -0
  614. package/dist/routes/desktop-lan/schema.d.ts +24 -0
  615. package/dist/routes/desktop-lan/schema.d.ts.map +1 -0
  616. package/dist/routes/desktop-lan/schema.js +40 -0
  617. package/dist/routes/desktop-lan/schema.js.map +1 -0
  618. package/dist/routes/desktop-local-db/handlers.d.ts +92 -0
  619. package/dist/routes/desktop-local-db/handlers.d.ts.map +1 -0
  620. package/dist/routes/desktop-local-db/handlers.js +300 -0
  621. package/dist/routes/desktop-local-db/handlers.js.map +1 -0
  622. package/dist/routes/desktop-local-db/index.d.ts +39 -0
  623. package/dist/routes/desktop-local-db/index.d.ts.map +1 -0
  624. package/dist/routes/desktop-local-db/index.js +83 -0
  625. package/dist/routes/desktop-local-db/index.js.map +1 -0
  626. package/dist/routes/desktop-local-db/placeholder.d.ts +75 -0
  627. package/dist/routes/desktop-local-db/placeholder.d.ts.map +1 -0
  628. package/dist/routes/desktop-local-db/placeholder.js +420 -0
  629. package/dist/routes/desktop-local-db/placeholder.js.map +1 -0
  630. package/dist/routes/desktop-local-db/schema.d.ts +50 -0
  631. package/dist/routes/desktop-local-db/schema.d.ts.map +1 -0
  632. package/dist/routes/desktop-local-db/schema.js +71 -0
  633. package/dist/routes/desktop-local-db/schema.js.map +1 -0
  634. package/dist/routes/desktop-local-db/sqlite-ddl.d.ts +104 -0
  635. package/dist/routes/desktop-local-db/sqlite-ddl.d.ts.map +1 -0
  636. package/dist/routes/desktop-local-db/sqlite-ddl.js +419 -0
  637. package/dist/routes/desktop-local-db/sqlite-ddl.js.map +1 -0
  638. package/dist/routes/email-templates/index.d.ts +7 -0
  639. package/dist/routes/email-templates/index.d.ts.map +1 -0
  640. package/dist/routes/email-templates/index.js +70 -0
  641. package/dist/routes/email-templates/index.js.map +1 -0
  642. package/dist/routes/email-templates/schema.d.ts +54 -0
  643. package/dist/routes/email-templates/schema.d.ts.map +1 -0
  644. package/dist/routes/email-templates/schema.js +35 -0
  645. package/dist/routes/email-templates/schema.js.map +1 -0
  646. package/dist/routes/exports/index.d.ts +19 -0
  647. package/dist/routes/exports/index.d.ts.map +1 -0
  648. package/dist/routes/exports/index.js +145 -0
  649. package/dist/routes/exports/index.js.map +1 -0
  650. package/dist/routes/exports/schema.d.ts +183 -0
  651. package/dist/routes/exports/schema.d.ts.map +1 -0
  652. package/dist/routes/exports/schema.js +37 -0
  653. package/dist/routes/exports/schema.js.map +1 -0
  654. package/dist/routes/generate/index.d.ts +23 -0
  655. package/dist/routes/generate/index.d.ts.map +1 -0
  656. package/dist/routes/generate/index.js +80 -0
  657. package/dist/routes/generate/index.js.map +1 -0
  658. package/dist/routes/generate/schema.d.ts +43 -0
  659. package/dist/routes/generate/schema.d.ts.map +1 -0
  660. package/dist/routes/generate/schema.js +37 -0
  661. package/dist/routes/generate/schema.js.map +1 -0
  662. package/dist/routes/imports/index.d.ts +21 -0
  663. package/dist/routes/imports/index.d.ts.map +1 -0
  664. package/dist/routes/imports/index.js +288 -0
  665. package/dist/routes/imports/index.js.map +1 -0
  666. package/dist/routes/imports/schema.d.ts +292 -0
  667. package/dist/routes/imports/schema.d.ts.map +1 -0
  668. package/dist/routes/imports/schema.js +78 -0
  669. package/dist/routes/imports/schema.js.map +1 -0
  670. package/dist/routes/index.d.ts +11 -0
  671. package/dist/routes/index.d.ts.map +1 -0
  672. package/dist/routes/index.js +8 -0
  673. package/dist/routes/index.js.map +1 -0
  674. package/dist/routes/jobs/index.d.ts +29 -0
  675. package/dist/routes/jobs/index.d.ts.map +1 -0
  676. package/dist/routes/jobs/index.js +175 -0
  677. package/dist/routes/jobs/index.js.map +1 -0
  678. package/dist/routes/jobs/schema.d.ts +170 -0
  679. package/dist/routes/jobs/schema.d.ts.map +1 -0
  680. package/dist/routes/jobs/schema.js +57 -0
  681. package/dist/routes/jobs/schema.js.map +1 -0
  682. package/dist/routes/llm/config-service.d.ts +48 -0
  683. package/dist/routes/llm/config-service.d.ts.map +1 -0
  684. package/dist/routes/llm/config-service.js +102 -0
  685. package/dist/routes/llm/config-service.js.map +1 -0
  686. package/dist/routes/llm/index.d.ts +69 -0
  687. package/dist/routes/llm/index.d.ts.map +1 -0
  688. package/dist/routes/llm/index.js +412 -0
  689. package/dist/routes/llm/index.js.map +1 -0
  690. package/dist/routes/llm/schema.d.ts +605 -0
  691. package/dist/routes/llm/schema.d.ts.map +1 -0
  692. package/dist/routes/llm/schema.js +238 -0
  693. package/dist/routes/llm/schema.js.map +1 -0
  694. package/dist/routes/me/handlers.d.ts +14 -0
  695. package/dist/routes/me/handlers.d.ts.map +1 -0
  696. package/dist/routes/me/handlers.js +88 -0
  697. package/dist/routes/me/handlers.js.map +1 -0
  698. package/dist/routes/me/index.d.ts +8 -0
  699. package/dist/routes/me/index.d.ts.map +1 -0
  700. package/dist/routes/me/index.js +17 -0
  701. package/dist/routes/me/index.js.map +1 -0
  702. package/dist/routes/me/schema.d.ts +270 -0
  703. package/dist/routes/me/schema.d.ts.map +1 -0
  704. package/dist/routes/me/schema.js +59 -0
  705. package/dist/routes/me/schema.js.map +1 -0
  706. package/dist/routes/me-views/index.d.ts +23 -0
  707. package/dist/routes/me-views/index.d.ts.map +1 -0
  708. package/dist/routes/me-views/index.js +76 -0
  709. package/dist/routes/me-views/index.js.map +1 -0
  710. package/dist/routes/me-views/schema.d.ts +44 -0
  711. package/dist/routes/me-views/schema.d.ts.map +1 -0
  712. package/dist/routes/me-views/schema.js +13 -0
  713. package/dist/routes/me-views/schema.js.map +1 -0
  714. package/dist/routes/notifications/index.d.ts +19 -0
  715. package/dist/routes/notifications/index.d.ts.map +1 -0
  716. package/dist/routes/notifications/index.js +123 -0
  717. package/dist/routes/notifications/index.js.map +1 -0
  718. package/dist/routes/notifications/schema.d.ts +122 -0
  719. package/dist/routes/notifications/schema.d.ts.map +1 -0
  720. package/dist/routes/notifications/schema.js +83 -0
  721. package/dist/routes/notifications/schema.js.map +1 -0
  722. package/dist/routes/onboarding/derive.d.ts +41 -0
  723. package/dist/routes/onboarding/derive.d.ts.map +1 -0
  724. package/dist/routes/onboarding/derive.js +30 -0
  725. package/dist/routes/onboarding/derive.js.map +1 -0
  726. package/dist/routes/onboarding/index.d.ts +26 -0
  727. package/dist/routes/onboarding/index.d.ts.map +1 -0
  728. package/dist/routes/onboarding/index.js +95 -0
  729. package/dist/routes/onboarding/index.js.map +1 -0
  730. package/dist/routes/onboarding/schema.d.ts +22 -0
  731. package/dist/routes/onboarding/schema.d.ts.map +1 -0
  732. package/dist/routes/onboarding/schema.js +22 -0
  733. package/dist/routes/onboarding/schema.js.map +1 -0
  734. package/dist/routes/pages/index.d.ts +26 -0
  735. package/dist/routes/pages/index.d.ts.map +1 -0
  736. package/dist/routes/pages/index.js +119 -0
  737. package/dist/routes/pages/index.js.map +1 -0
  738. package/dist/routes/pages/layout-schema.d.ts +19 -0
  739. package/dist/routes/pages/layout-schema.d.ts.map +1 -0
  740. package/dist/routes/pages/layout-schema.js +19 -0
  741. package/dist/routes/pages/layout-schema.js.map +1 -0
  742. package/dist/routes/pages/schema.d.ts +52 -0
  743. package/dist/routes/pages/schema.d.ts.map +1 -0
  744. package/dist/routes/pages/schema.js +35 -0
  745. package/dist/routes/pages/schema.js.map +1 -0
  746. package/dist/routes/roles/index.d.ts +17 -0
  747. package/dist/routes/roles/index.d.ts.map +1 -0
  748. package/dist/routes/roles/index.js +255 -0
  749. package/dist/routes/roles/index.js.map +1 -0
  750. package/dist/routes/roles/schema.d.ts +94 -0
  751. package/dist/routes/roles/schema.d.ts.map +1 -0
  752. package/dist/routes/roles/schema.js +57 -0
  753. package/dist/routes/roles/schema.js.map +1 -0
  754. package/dist/routes/scheduled-reports/index.d.ts +15 -0
  755. package/dist/routes/scheduled-reports/index.d.ts.map +1 -0
  756. package/dist/routes/scheduled-reports/index.js +195 -0
  757. package/dist/routes/scheduled-reports/index.js.map +1 -0
  758. package/dist/routes/scheduled-reports/schema.d.ts +154 -0
  759. package/dist/routes/scheduled-reports/schema.d.ts.map +1 -0
  760. package/dist/routes/scheduled-reports/schema.js +49 -0
  761. package/dist/routes/scheduled-reports/schema.js.map +1 -0
  762. package/dist/routes/schema/index.d.ts +24 -0
  763. package/dist/routes/schema/index.d.ts.map +1 -0
  764. package/dist/routes/schema/index.js +224 -0
  765. package/dist/routes/schema/index.js.map +1 -0
  766. package/dist/routes/schema/schema.d.ts +92 -0
  767. package/dist/routes/schema/schema.d.ts.map +1 -0
  768. package/dist/routes/schema/schema.js +64 -0
  769. package/dist/routes/schema/schema.js.map +1 -0
  770. package/dist/routes/schema-import/fallback-parser.d.ts +35 -0
  771. package/dist/routes/schema-import/fallback-parser.d.ts.map +1 -0
  772. package/dist/routes/schema-import/fallback-parser.js +349 -0
  773. package/dist/routes/schema-import/fallback-parser.js.map +1 -0
  774. package/dist/routes/schema-import/index.d.ts +43 -0
  775. package/dist/routes/schema-import/index.d.ts.map +1 -0
  776. package/dist/routes/schema-import/index.js +167 -0
  777. package/dist/routes/schema-import/index.js.map +1 -0
  778. package/dist/routes/schema-import/schema.d.ts +65 -0
  779. package/dist/routes/schema-import/schema.d.ts.map +1 -0
  780. package/dist/routes/schema-import/schema.js +40 -0
  781. package/dist/routes/schema-import/schema.js.map +1 -0
  782. package/dist/routes/search/index.d.ts +71 -0
  783. package/dist/routes/search/index.d.ts.map +1 -0
  784. package/dist/routes/search/index.js +361 -0
  785. package/dist/routes/search/index.js.map +1 -0
  786. package/dist/routes/search/schema.d.ts +125 -0
  787. package/dist/routes/search/schema.d.ts.map +1 -0
  788. package/dist/routes/search/schema.js +70 -0
  789. package/dist/routes/search/schema.js.map +1 -0
  790. package/dist/routes/settings/index.d.ts +24 -0
  791. package/dist/routes/settings/index.d.ts.map +1 -0
  792. package/dist/routes/settings/index.js +164 -0
  793. package/dist/routes/settings/index.js.map +1 -0
  794. package/dist/routes/settings/schema.d.ts +110 -0
  795. package/dist/routes/settings/schema.d.ts.map +1 -0
  796. package/dist/routes/settings/schema.js +71 -0
  797. package/dist/routes/settings/schema.js.map +1 -0
  798. package/dist/routes/setup/index.d.ts +29 -0
  799. package/dist/routes/setup/index.d.ts.map +1 -0
  800. package/dist/routes/setup/index.js +68 -0
  801. package/dist/routes/setup/index.js.map +1 -0
  802. package/dist/routes/setup/schema.d.ts +61 -0
  803. package/dist/routes/setup/schema.d.ts.map +1 -0
  804. package/dist/routes/setup/schema.js +47 -0
  805. package/dist/routes/setup/schema.js.map +1 -0
  806. package/dist/routes/system/handlers.d.ts +63 -0
  807. package/dist/routes/system/handlers.d.ts.map +1 -0
  808. package/dist/routes/system/handlers.js +121 -0
  809. package/dist/routes/system/handlers.js.map +1 -0
  810. package/dist/routes/system/index.d.ts +34 -0
  811. package/dist/routes/system/index.d.ts.map +1 -0
  812. package/dist/routes/system/index.js +18 -0
  813. package/dist/routes/system/index.js.map +1 -0
  814. package/dist/routes/system/schema.d.ts +93 -0
  815. package/dist/routes/system/schema.d.ts.map +1 -0
  816. package/dist/routes/system/schema.js +109 -0
  817. package/dist/routes/system/schema.js.map +1 -0
  818. package/dist/routes/views/index.d.ts +21 -0
  819. package/dist/routes/views/index.d.ts.map +1 -0
  820. package/dist/routes/views/index.js +155 -0
  821. package/dist/routes/views/index.js.map +1 -0
  822. package/dist/routes/views/schema.d.ts +127 -0
  823. package/dist/routes/views/schema.d.ts.map +1 -0
  824. package/dist/routes/views/schema.js +56 -0
  825. package/dist/routes/views/schema.js.map +1 -0
  826. package/dist/routes/widget-data/index.d.ts +29 -0
  827. package/dist/routes/widget-data/index.d.ts.map +1 -0
  828. package/dist/routes/widget-data/index.js +152 -0
  829. package/dist/routes/widget-data/index.js.map +1 -0
  830. package/dist/routes/widget-data/schema.d.ts +252 -0
  831. package/dist/routes/widget-data/schema.d.ts.map +1 -0
  832. package/dist/routes/widget-data/schema.js +44 -0
  833. package/dist/routes/widget-data/schema.js.map +1 -0
  834. package/dist/setup/service.d.ts +63 -0
  835. package/dist/setup/service.d.ts.map +1 -0
  836. package/dist/setup/service.js +103 -0
  837. package/dist/setup/service.js.map +1 -0
  838. package/dist/start.d.ts +12 -0
  839. package/dist/start.d.ts.map +1 -0
  840. package/dist/start.js +28 -0
  841. package/dist/start.js.map +1 -0
  842. package/dist/telemetry/payload.d.ts +66 -0
  843. package/dist/telemetry/payload.d.ts.map +1 -0
  844. package/dist/telemetry/payload.js +69 -0
  845. package/dist/telemetry/payload.js.map +1 -0
  846. package/dist/telemetry/service.d.ts +67 -0
  847. package/dist/telemetry/service.d.ts.map +1 -0
  848. package/dist/telemetry/service.js +103 -0
  849. package/dist/telemetry/service.js.map +1 -0
  850. package/dist/telemetry/update-check.d.ts +79 -0
  851. package/dist/telemetry/update-check.d.ts.map +1 -0
  852. package/dist/telemetry/update-check.js +103 -0
  853. package/dist/telemetry/update-check.js.map +1 -0
  854. package/dist/version.d.ts +14 -0
  855. package/dist/version.d.ts.map +1 -0
  856. package/dist/version.js +21 -0
  857. package/dist/version.js.map +1 -0
  858. package/dist/widget-data/cache.d.ts +35 -0
  859. package/dist/widget-data/cache.d.ts.map +1 -0
  860. package/dist/widget-data/cache.js +67 -0
  861. package/dist/widget-data/cache.js.map +1 -0
  862. package/dist/widget-data/compiler.d.ts +107 -0
  863. package/dist/widget-data/compiler.d.ts.map +1 -0
  864. package/dist/widget-data/compiler.js +362 -0
  865. package/dist/widget-data/compiler.js.map +1 -0
  866. package/dist/widget-data/shapers.d.ts +75 -0
  867. package/dist/widget-data/shapers.d.ts.map +1 -0
  868. package/dist/widget-data/shapers.js +128 -0
  869. package/dist/widget-data/shapers.js.map +1 -0
  870. package/dist/widget-data/stream-publisher.d.ts +42 -0
  871. package/dist/widget-data/stream-publisher.d.ts.map +1 -0
  872. package/dist/widget-data/stream-publisher.js +34 -0
  873. package/dist/widget-data/stream-publisher.js.map +1 -0
  874. package/package.json +79 -0
  875. package/vocabulary/llm-allowlist.json +76 -0
package/README.md ADDED
@@ -0,0 +1,94 @@
1
+ # Adminium
2
+
3
+ **From connection string to shipped dashboard.**
4
+
5
+ Adminium introspects a database — or a schema file — classifies the structure and
6
+ relations it finds, and generates a complete, themable React admin dashboard. This
7
+ package is the whole product in one install: the Fastify API, the meta-store
8
+ migrations, the CLI, and the pre-built dashboard it serves.
9
+
10
+ Adminium is free and open source under **AGPL-3.0-only**. Source, issues and
11
+ releases: <https://github.com/MoSofi/Adminium>.
12
+
13
+ > **npm naming.** The `@adminium` scope and the unscoped name `adminium` on npm both
14
+ > belong to unrelated parties. Adminium publishes under **`@adminiumjs`** — install
15
+ > `@adminiumjs/adminium`, never a bare `adminium`. The installed command is still
16
+ > `adminium`.
17
+
18
+ ## Install
19
+
20
+ ```sh
21
+ npm install -g @adminiumjs/adminium
22
+ adminium
23
+ ```
24
+
25
+ Or run it without installing:
26
+
27
+ ```sh
28
+ npx @adminiumjs/adminium
29
+ ```
30
+
31
+ Node.js 22 or newer is required.
32
+
33
+ Running `adminium` with no arguments starts the interactive setup: it asks for a
34
+ database connection, probes it, generates the app, and starts the server on
35
+ <http://localhost:4600>.
36
+
37
+ ## Commands
38
+
39
+ | Command | What it does |
40
+ |---|---|
41
+ | `adminium` / `adminium init` | Interactive setup: connect a database, generate the app, start the server |
42
+ | `adminium start` | Start the server and serve the dashboard (`--port`, `--host`) |
43
+ | `adminium introspect --connection <id>` | Introspect a connection and store the schema snapshot |
44
+ | `adminium migrate [--status]` | Run the meta-store migrations (idempotent) |
45
+ | `adminium export-zip` | Export the instance configuration as a runnable bundle |
46
+ | `adminium import-zip --in <file>` | Import an instance configuration bundle |
47
+ | `adminium generate-prompt` | Build an LLM enrichment prompt (bring-your-own round trip) |
48
+ | `adminium apply-llm-response` | Validate an LLM response and apply the accepted suggestions |
49
+
50
+ `adminium --help`, or `adminium <command> --help`, prints the full flag list.
51
+
52
+ ## Configuration
53
+
54
+ Everything is environment-driven, validated once at boot.
55
+
56
+ | Variable | Purpose |
57
+ |---|---|
58
+ | `ADMINIUM_SECRET` | **Required.** Master secret, ≥16 chars — e.g. `openssl rand -hex 32` |
59
+ | `PORT` | Listen port (default `4600`) |
60
+ | `HOST` | Bind address (default `0.0.0.0`) |
61
+ | `ADMINIUM_META_URL` | Meta-store DSN: `postgres://`, `mysql://`, or `sqlite:<path>` |
62
+ | `ADMINIUM_DATA_DIR` | Writable directory for files, exports and backups (default `./data`) |
63
+ | `ADMINIUM_LOG_LEVEL` | `trace`…`fatal` (default `info`) |
64
+ | `ADMINIUM_TRUST_PROXY` | Enable behind a TLS-terminating proxy |
65
+ | `ADMINIUM_CORS_ORIGINS` | Comma-separated allowed origins |
66
+ | `ADMINIUM_NETWORK_FEATURES` | `off` on air-gapped installs — the UI stops offering webhooks/OAuth |
67
+ | `ADMINIUM_TELEMETRY` | `off` by default |
68
+
69
+ A missing or malformed value fails the boot with the fix printed, rather than
70
+ starting a half-configured server.
71
+
72
+ ### Databases
73
+
74
+ Adminium reads your data through **PostgreSQL**, **MySQL/MariaDB** and **SQLite**
75
+ adapters. The meta store (Adminium's own `adminium_*` tables) runs on Postgres,
76
+ MySQL or an embedded SQLite file; the Postgres and MySQL drivers ship as optional
77
+ dependencies, so `--no-optional` yields a SQLite-only install.
78
+
79
+ ## Related packages
80
+
81
+ `@adminiumjs/engine`, `@adminiumjs/meta`, `@adminiumjs/widgets`,
82
+ `@adminiumjs/charts`, `@adminiumjs/ui`, `@adminiumjs/llm`,
83
+ `@adminiumjs/schema-import`, `@adminiumjs/adapter-postgres`,
84
+ `@adminiumjs/adapter-mysql`, `@adminiumjs/adapter-sqlite`, `@adminiumjs/i18n`,
85
+ `@adminiumjs/tokens`, `@adminiumjs/manifest`.
86
+
87
+ Their compiled imports use the `@adminium/*` specifiers; the published manifests
88
+ alias them (`"@adminium/engine": "npm:@adminiumjs/engine@<version>"`) so a normal
89
+ `npm install` resolves everything with no extra configuration.
90
+
91
+ ## Licence
92
+
93
+ AGPL-3.0-only. The complete corresponding source for this package is at
94
+ <https://github.com/MoSofi/Adminium>. See the bundled `LICENSE`.
@@ -0,0 +1,2 @@
1
+ import{j as t,a as l,T as c,b as u,M as p,c as f,d as x}from"./index-PB1II0WV.js";const g=x("inline-flex items-center gap-1 whitespace-nowrap rounded-full px-1.5 py-0.5 text-[10.5px] font-bold leading-none",{variants:{tone:{pos:"bg-pos-soft text-pos",danger:"bg-danger-soft text-danger",muted:"bg-surface-3 text-fg-muted"}},defaultVariants:{tone:"muted"}}),m={up:u,down:c,flat:l};function T(e,n){return e==="flat"?"muted":(n?e==="down":e==="up")?"pos":"danger"}function h({className:e,trend:n,invertGood:a=!1,tone:o,children:r,...d}){const s=o??T(n,a),i=m[n];return t.jsxs("span",{"data-trend":n,"data-tone":s,className:f(g({tone:s}),e),...d,children:[t.jsx(i,{"aria-hidden":"true",className:"size-3 shrink-0 rtl:-scale-x-100"}),t.jsx(p,{children:r})]})}export{h as D};
2
+ //# sourceMappingURL=DeltaPill-dxlsGh-1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeltaPill-dxlsGh-1.js","sources":["../../../../packages/ui/dist/components/delta-pill/DeltaPill.js"],"sourcesContent":["import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { cva } from 'class-variance-authority';\nimport { Minus, TrendingDown, TrendingUp } from 'lucide-react';\nimport { cn } from '../../lib/cn.js';\nimport { MonoText } from '../mono-text/MonoText.js';\n/**\n * Trend pill: trending-up/down/flat Lucide icon + a mono % value, tones\n * pos/danger/muted (research/design-system.md §3 Tier 1).\n */\nexport const deltaPillVariants = cva('inline-flex items-center gap-1 whitespace-nowrap rounded-full px-1.5 py-0.5 text-[10.5px] font-bold leading-none', {\n variants: {\n tone: {\n pos: 'bg-pos-soft text-pos',\n danger: 'bg-danger-soft text-danger',\n muted: 'bg-surface-3 text-fg-muted',\n },\n },\n defaultVariants: { tone: 'muted' },\n});\nconst TREND_ICONS = {\n up: TrendingUp,\n down: TrendingDown,\n flat: Minus,\n};\nfunction trendTone(trend, invertGood) {\n if (trend === 'flat')\n return 'muted';\n const good = invertGood ? trend === 'down' : trend === 'up';\n return good ? 'pos' : 'danger';\n}\nexport function DeltaPill({ className, trend, invertGood = false, tone, children, ...props }) {\n const resolved = tone ?? trendTone(trend, invertGood);\n const Icon = TREND_ICONS[trend];\n return (_jsxs(\"span\", { \"data-trend\": trend, \"data-tone\": resolved, className: cn(deltaPillVariants({ tone: resolved }), className), ...props, children: [_jsx(Icon, { \"aria-hidden\": \"true\", className: \"size-3 shrink-0 rtl:-scale-x-100\" }), _jsx(MonoText, { children: children })] }));\n}\n//# sourceMappingURL=DeltaPill.js.map"],"names":["deltaPillVariants","cva","TREND_ICONS","TrendingUp","TrendingDown","Minus","trendTone","trend","invertGood","DeltaPill","className","tone","children","props","resolved","Icon","_jsxs","cn","_jsx","MonoText"],"mappings":"kFASO,MAAMA,EAAoBC,EAAI,mHAAoH,CACrJ,SAAU,CACN,KAAM,CACF,IAAK,uBACL,OAAQ,6BACR,MAAO,4BACnB,CACA,EACI,gBAAiB,CAAE,KAAM,OAAO,CACpC,CAAC,EACKC,EAAc,CAChB,GAAIC,EACJ,KAAMC,EACN,KAAMC,CACV,EACA,SAASC,EAAUC,EAAOC,EAAY,CAClC,OAAID,IAAU,OACH,SACEC,EAAaD,IAAU,OAASA,IAAU,MACzC,MAAQ,QAC1B,CACO,SAASE,EAAU,CAAE,UAAAC,EAAW,MAAAH,EAAO,WAAAC,EAAa,GAAO,KAAAG,EAAM,SAAAC,EAAU,GAAGC,GAAS,CAC1F,MAAMC,EAAWH,GAAQL,EAAUC,EAAOC,CAAU,EAC9CO,EAAOb,EAAYK,CAAK,EAC9B,OAAQS,EAAAA,KAAM,OAAQ,CAAE,aAAcT,EAAO,YAAaO,EAAU,UAAWG,EAAGjB,EAAkB,CAAE,KAAMc,CAAQ,CAAE,EAAGJ,CAAS,EAAG,GAAGG,EAAO,SAAU,CAACK,EAAAA,IAAKH,EAAM,CAAE,cAAe,OAAQ,UAAW,kCAAkC,CAAE,EAAGG,EAAAA,IAAKC,EAAU,CAAE,SAAUP,CAAQ,CAAE,CAAC,EAAG,CAC7R"}
@@ -0,0 +1,2 @@
1
+ import{j as n,cq as N,dW as P,dX as R,dY as Y,dZ as z,d_ as I}from"./index-PB1II0WV.js";import{e as Q,b as B}from"./scales-e0tkfEy1.js";import{e as $,n as q}from"./stats-BNgXz5BD.js";import{f as W}from"./format-Lx4cQ8k-.js";function O(e,r,s=4){const[a,o]=$(e)??[0,1],g=a===o?[a,a+1]:q(a,o,s),u=g[0]??a,i=g.at(-1)??o+1,x=i-u||1;return{yTicks:g,domain:[u,i],yFor:d=>r-(d-u)/x*r}}function D(e,r){const{width:s,height:a,rtl:o,boxFraction:g=.55,tickCount:u=4}=r,i=O(e.flatMap(h=>[h.min,h.max]),a,u),x=Q(e.map(h=>h.label),s,o,{paddingInner:.4,paddingOuter:.25}),d=x.bandwidth(),l=Math.max(1,d*g),p=[];for(const h of e){const y=x(h.label);if(y===void 0)continue;const c=y+d/2;p.push({label:h.label,centerX:c,boxX:c-l/2,boxWidth:l,yMin:i.yFor(h.min),yQ1:i.yFor(h.q1),yMed:i.yFor(h.med),yQ3:i.yFor(h.q3),yMax:i.yFor(h.max)})}return{boxes:p,yTicks:i.yTicks,yFor:i.yFor,bandwidth:d}}function Z(e,r){const{width:s,height:a,rtl:o,halfWidthFraction:g=.42,tickCount:u=4}=r,i=O(e.flatMap(h=>[h.min,h.max]),a,u),x=Q(e.map(h=>h.label),s,o,{paddingInner:.35,paddingOuter:.2}),d=x.bandwidth(),l=Math.max(1,d/2*g),p=[];for(const h of e){const y=x(h.label);if(y===void 0)continue;const c=y+d/2,t=h.density.length,f=Math.max(...h.density,1e-9),m=w=>t<=1?h.min:h.min+w/(t-1)*(h.max-h.min),b=h.density.map((w,C)=>({x:c+w/f*l,y:i.yFor(m(C))})),j=[...h.density].map((w,C)=>({x:c-w/f*l,y:i.yFor(m(C))})).reverse(),F=[...b,...j],k=F.length>0?`${B(F)??""}Z`:"";p.push({label:h.label,centerX:c,path:k,medY:i.yFor(h.med)})}return{violins:p,yTicks:i.yTicks,yFor:i.yFor,bandwidth:d}}function E(e,r){const{width:s,height:a,rtl:o,overlap:g=1.5,labelGutter:u=52,minAlpha:i=.35}=r,x=e.length,d=o?0:u,l=o?s-u:s,p=Math.max(1,l-d),h=Math.max(...e.flatMap(m=>[...m.density]),1e-9),y=x>0?a/x:a,c=y*g,t=(m,b)=>{const j=b<=1?0:m/(b-1);return o?l-j*p:d+j*p};return{rows:e.map((m,b)=>{const j=a-b*y,F=m.density.length,k=m.density.map((X,_)=>({x:t(_,F),y:j-X/h*c})),w=B(k)??"",C=k[0],A=k.at(-1),L=w===""||C===void 0||A===void 0?"":`${w}L${A.x},${j}L${C.x},${j}Z`,v=x<=1?1:1-b/(x-1)*(1-i);return{label:m.label,areaPath:L,linePath:w,baselineY:j,labelY:j-4,alpha:v}}),plotStart:d,plotEnd:l}}function G({groups:e,labels:r,height:s=260,showAxis:a=!0,showCategoryLabels:o=!0,formatY:g=W,dir:u,a11yFallback:i,className:x}){const d={top:8,bottom:o?22:6,near:a?40:6,far:10};return n.jsx(N,{labels:r,height:s,...u!==void 0?{dir:u}:{},...i!==void 0?{a11yFallback:i}:{},...x!==void 0?{className:x}:{},padding:{top:d.top,bottom:d.bottom,left:d.near,right:d.far},children:({innerWidth:l,innerHeight:p,rtl:h,mounted:y})=>{if(e.length===0||l<=0||p<=0)return null;const c=D(e,{width:l,height:p,rtl:h});return n.jsxs("g",{className:"adm-chart-fade",style:{"--adm-fade":y?"1":"0"},children:[a&&c.yTicks.map(t=>n.jsxs("g",{children:[n.jsx("line",{className:"adm-chart-gridline",x1:0,x2:l,y1:c.yFor(t),y2:c.yFor(t)}),n.jsx("text",{className:"adm-chart-axis-label adm-chart-num",x:h?l+6:-6,y:c.yFor(t)+3,textAnchor:h?"start":"end",children:g(t)})]},t)),c.boxes.map(t=>{const f=t.boxWidth/2;return n.jsxs("g",{"data-box":t.label,children:[n.jsx("line",{x1:t.centerX,x2:t.centerX,y1:t.yMax,y2:t.yMin,stroke:"var(--viz-1)",strokeWidth:1.5}),n.jsx("line",{x1:t.centerX-f/2,x2:t.centerX+f/2,y1:t.yMax,y2:t.yMax,stroke:"var(--viz-1)",strokeWidth:1.5}),n.jsx("line",{x1:t.centerX-f/2,x2:t.centerX+f/2,y1:t.yMin,y2:t.yMin,stroke:"var(--viz-1)",strokeWidth:1.5}),n.jsx("rect",{x:t.boxX,y:t.yQ3,width:t.boxWidth,height:Math.max(0,t.yQ1-t.yQ3),rx:2,fill:"var(--accent-area)",stroke:"var(--viz-1)",strokeWidth:1.5,"data-box-rect":""}),n.jsx("line",{x1:t.boxX,x2:t.boxX+t.boxWidth,y1:t.yMed,y2:t.yMed,stroke:"var(--viz-1)",strokeWidth:2,"data-median":""})]},t.label)}),o&&c.boxes.map(t=>n.jsx("text",{className:"adm-chart-axis-label",x:t.centerX,y:p+15,textAnchor:"middle",children:t.label},t.label))]})}})}function K({groups:e,labels:r,height:s=260,showAxis:a=!0,showCategoryLabels:o=!0,formatY:g=W,dir:u,a11yFallback:i,className:x}){const d={top:8,bottom:o?22:6,near:a?40:6,far:10};return n.jsx(N,{labels:r,height:s,...u!==void 0?{dir:u}:{},...i!==void 0?{a11yFallback:i}:{},...x!==void 0?{className:x}:{},padding:{top:d.top,bottom:d.bottom,left:d.near,right:d.far},children:({innerWidth:l,innerHeight:p,rtl:h,mounted:y})=>{if(e.length===0||l<=0||p<=0)return null;const c=Z(e,{width:l,height:p,rtl:h});return n.jsxs("g",{className:"adm-chart-fade",style:{"--adm-fade":y?"1":"0"},children:[a&&c.yTicks.map(t=>n.jsxs("g",{children:[n.jsx("line",{className:"adm-chart-gridline",x1:0,x2:l,y1:c.yFor(t),y2:c.yFor(t)}),n.jsx("text",{className:"adm-chart-axis-label adm-chart-num",x:h?l+6:-6,y:c.yFor(t)+3,textAnchor:h?"start":"end",children:g(t)})]},t)),c.violins.map(t=>n.jsxs("g",{"data-violin":t.label,children:[n.jsx("path",{d:t.path,fill:"var(--accent-area)",stroke:"var(--viz-1)",strokeWidth:1.5,"data-violin-path":""}),n.jsx("line",{x1:t.centerX-c.bandwidth*.24,x2:t.centerX+c.bandwidth*.24,y1:t.medY,y2:t.medY,stroke:"var(--viz-1)",strokeWidth:2,"data-median":""})]},t.label)),o&&c.violins.map(t=>n.jsx("text",{className:"adm-chart-axis-label",x:t.centerX,y:p+15,textAnchor:"middle",children:t.label},t.label))]})}})}function H({groups:e,labels:r,height:s=260,overlap:a=1.5,showLabels:o=!0,dir:g,a11yFallback:u,className:i}){return n.jsx(N,{labels:r,height:s,...g!==void 0?{dir:g}:{},...u!==void 0?{a11yFallback:u}:{},...i!==void 0?{className:i}:{},padding:{top:10,bottom:8,left:8,right:8},children:({innerWidth:x,innerHeight:d,rtl:l,mounted:p})=>{if(e.length===0||x<=0||d<=0)return null;const y=[...E(e,{width:x,height:d,rtl:l,overlap:a,labelGutter:o?52:8}).rows].reverse();return n.jsx("g",{className:"adm-chart-fade",style:{"--adm-fade":p?"1":"0"},children:y.map(c=>n.jsxs("g",{"data-ridge":c.label,children:[n.jsx("path",{d:c.areaPath,fill:"var(--accent)",fillOpacity:c.alpha*.55,"data-ridge-area":""}),n.jsx("path",{d:c.linePath,fill:"none",stroke:"var(--viz-1)",strokeWidth:1.5,strokeOpacity:c.alpha,"data-ridge-line":""}),o&&n.jsx("text",{className:"adm-chart-axis-label",x:l?x:0,y:c.labelY,textAnchor:l?"end":"start",children:c.label})]},c.label))})}})}function U(e){const r=e.length;if(r<2)return null;let s=0,a=0,o=0,g=0;for(const d of e)s+=d.x,a+=d.y,o+=d.x*d.x,g+=d.x*d.y;const u=r*o-s*s;if(u===0)return null;const i=(r*g-s*a)/u,x=(a-i*s)/r;return{slope:i,intercept:x}}function J(e,r){const{width:s,height:a,rtl:o,radiusRange:g=[3,15],fixedRadius:u=4,trendLine:i=!0,tickCount:x=4}=r,d=q(...$(e.map(v=>v.x))??[0,1],x),l=d[0]??0,p=d.at(-1)??1,h=p-l||1,y=v=>{const X=(v-l)/h;return o?s-X*s:X*s},c=O(e.map(v=>v.y),a,x),t=e.some(v=>typeof v.r=="number"),[f,m]=g,b=$(e.map(v=>v.r??0)),j=b?.[0]??0,k=(b?.[1]??1)-j||1,w=v=>!t||v===void 0?u:f+(v-j)/k*(m-f),C=[],A=e.map((v,X)=>(v.segment!==void 0&&!C.includes(v.segment)&&C.push(v.segment),{index:X,cx:y(v.x),cy:c.yFor(v.y),r:w(v.r),segment:v.segment}));let L=null;if(i){const v=U(e);v!==null&&(L={x1:y(l),y1:c.yFor(v.slope*l+v.intercept),x2:y(p),y2:c.yFor(v.slope*p+v.intercept)})}return{marks:A,xTicks:d,yTicks:c.yTicks,xFor:y,yFor:c.yFor,trend:L,segments:C}}const S=Math.sqrt(3);function tt(e){const{rows:r,cols:s,width:a,height:o,rtl:g}=e,u=Math.max(1,s),i=Math.max(1,r),x=a/(S*(u+.5)),d=o/(1.5*i+.5),l=Math.max(1,Math.min(x,d)),p=S*l,h=1.5*l,y=[];for(let t=0;t<i;t+=1)for(let f=0;f<u;f+=1){const m=t%2===1?p/2:0,b=l*(S/2)+m+f*p,j=g?a-b:b,F=l+t*h;y.push({row:t,col:f,cx:j,cy:F})}return{cells:y,radius:l,hexPoints:(t,f)=>Array.from({length:6},(m,b)=>{const j=Math.PI/180*(60*b-90);return`${(t+l*Math.cos(j)).toFixed(3)},${(f+l*Math.sin(j)).toFixed(3)}`}).join(" ")}}function et(e){const{rows:r,cols:s,width:a,height:o,rtl:g,gap:u=2}=e,i=Math.max(1,s),x=Math.max(1,r),d=(a-u*(i-1))/i,l=(o-u*(x-1))/x,p=c=>(g?i-1-c:c)*(d+u),h=c=>c*(l+u),y=[];for(let c=0;c<x;c+=1)for(let t=0;t<i;t+=1)y.push({row:c,col:t,x:p(t),y:h(c),w:Math.max(0,d),h:Math.max(0,l)});return{cells:y,cellW:d,cellH:l,colX:p,rowY:h}}function nt(e,r,s){const{width:a,height:o,rtl:g=!1,padY:u=8}=s,i=e.length,x=u,d=o-u,l=d-x||1,p=e.map((t,f)=>{const m=i<=1?.5:f/(i-1);return g?a-m*a:m*a}),h=(t,f)=>{const m=e[t];if(m===void 0)return d;const b=m.max-m.min||1,j=(f-m.min)/b;return d-j*l},y=[],c=r.map((t,f)=>{t.segment!==void 0&&!y.includes(t.segment)&&y.push(t.segment);const m=e.map((b,j)=>({x:p[j]??0,y:h(j,t.values[j]??0)}));return{index:f,path:B(m)??"",segment:t.segment}});return{axisX:p,yTop:x,yBottom:d,paths:c,segments:y,yForAxis:h}}function at(e){let r=0;for(const s of e)for(const a of s)typeof a=="number"&&a>r&&(r=a);return r}function st({cells:e,labels:r,height:s=260,minAlpha:a=.18,dir:o,a11yFallback:g,className:u}){const i=e.length,x=e.reduce((l,p)=>Math.max(l,p.length),0),d=at(e);return n.jsx(N,{labels:r,height:s,...o!==void 0?{dir:o}:{},...g!==void 0?{a11yFallback:g}:{},...u!==void 0?{className:u}:{},padding:{top:6,bottom:6,left:6,right:6},children:({innerWidth:l,innerHeight:p,rtl:h,mounted:y})=>{if(i===0||x===0||l<=0||p<=0)return null;const c=tt({rows:i,cols:x,width:l,height:p,rtl:h});return n.jsx("g",{className:"adm-chart-fade",style:{"--adm-fade":y?"1":"0"},children:c.cells.map(t=>{const f=e[t.row]?.[t.col];if(typeof f!="number"||f<=0)return null;const m=d>0?a+f/d*(1-a):a;return n.jsx("polygon",{points:c.hexPoints(t.cx,t.cy),fill:"var(--accent)",fillOpacity:m,stroke:"var(--surface)",strokeWidth:1,"data-hex-row":t.row,"data-hex-col":t.col,"data-count":f},`${t.row}-${t.col}`)})})}})}const T=["var(--viz-1)","var(--viz-2)","var(--viz-3)","var(--viz-4)","var(--viz-5)","var(--viz-6)","var(--viz-7)","var(--viz-8)"];function V(e){return T[(e%T.length+T.length)%T.length]}function rt({points:e,labels:r,height:s=280,showAxis:a=!0,trendLine:o=!0,formatX:g=W,formatY:u=W,dir:i,a11yFallback:x,className:d}){const l={top:10,bottom:a?22:8,near:a?40:8,far:14};return n.jsx(N,{labels:r,height:s,...i!==void 0?{dir:i}:{},...x!==void 0?{a11yFallback:x}:{},...d!==void 0?{className:d}:{},padding:{top:l.top,bottom:l.bottom,left:l.near,right:l.far},children:({innerWidth:p,innerHeight:h,rtl:y,mounted:c})=>{if(e.length===0||p<=0||h<=0)return null;const t=J(e,{width:p,height:h,rtl:y,trendLine:o}),f=m=>m===void 0?"var(--viz-1)":V(t.segments.indexOf(m));return n.jsxs("g",{className:"adm-chart-fade",style:{"--adm-fade":c?"1":"0"},children:[a&&t.yTicks.map(m=>n.jsxs("g",{children:[n.jsx("line",{className:"adm-chart-gridline",x1:0,x2:p,y1:t.yFor(m),y2:t.yFor(m)}),n.jsx("text",{className:"adm-chart-axis-label adm-chart-num",x:y?p+6:-6,y:t.yFor(m)+3,textAnchor:y?"start":"end",children:u(m)})]},`y${m}`)),a&&t.xTicks.map(m=>n.jsx("text",{className:"adm-chart-axis-label adm-chart-num",x:t.xFor(m),y:h+15,textAnchor:"middle",children:g(m)},`x${m}`)),o&&t.trend!==null&&n.jsx("line",{x1:t.trend.x1,y1:t.trend.y1,x2:t.trend.x2,y2:t.trend.y2,stroke:"var(--fg-subtle)",strokeWidth:1.5,strokeDasharray:"5 4","data-trend":""}),t.marks.map(m=>n.jsx("circle",{cx:m.cx,cy:m.cy,r:m.r,fill:f(m.segment),fillOpacity:.72,stroke:"var(--surface)",strokeWidth:1,"data-point-index":m.index,...m.segment!==void 0?{"data-segment":m.segment}:{}},m.index))]})}})}function ot(e){const r=e.toFixed(2);return r==="-0.00"?"0.00":r}function it({cells:e,columns:r,labels:s,height:a=260,showLabels:o=!0,strongThreshold:g=.55,dir:u,a11yFallback:i,className:x}){const d=e.length,l=r.length,p={top:o?18:6,bottom:6,near:o?68:6,far:8};return n.jsx(N,{labels:s,height:a,...u!==void 0?{dir:u}:{},...i!==void 0?{a11yFallback:i}:{},...x!==void 0?{className:x}:{},padding:{top:p.top,bottom:p.bottom,left:p.near,right:p.far},children:({innerWidth:h,innerHeight:y,rtl:c,mounted:t})=>{if(d===0||l===0||h<=0||y<=0)return null;const f=et({rows:d,cols:l,width:h,height:y,rtl:c}),m=f.cellW>=26&&f.cellH>=18;return n.jsxs("g",{className:"adm-chart-fade",style:{"--adm-fade":t?"1":"0"},children:[f.cells.map(b=>{const j=e[b.row]?.[b.col];if(typeof j!="number")return null;const F=Math.min(1,Math.abs(j)),k=F>=g;return n.jsxs("g",{"data-cell-row":b.row,"data-cell-col":b.col,children:[n.jsx("rect",{x:b.x,y:b.y,width:b.w,height:b.h,rx:3,fill:j>=0?"var(--accent)":"var(--danger)",fillOpacity:.12+F*.88,"data-sign":j>=0?"pos":"neg"}),m&&n.jsx("text",{className:"adm-chart-num",x:b.x+b.w/2,y:b.y+b.h/2+3,textAnchor:"middle",fontSize:10,fontWeight:600,fill:k?"var(--accent-fg)":"var(--fg-muted)",children:ot(j)})]},`${b.row}-${b.col}`)}),o&&r.map((b,j)=>n.jsx("text",{className:"adm-chart-axis-label",x:f.colX(j)+f.cellW/2,y:-6,textAnchor:"middle",children:b},`col-${b}`)),o&&r.map((b,j)=>j<d?n.jsx("text",{className:"adm-chart-axis-label",x:c?h+6:-6,y:f.rowY(j)+f.cellH/2+3,textAnchor:c?"start":"end",children:b},`row-${b}`):null)]})}})}function lt({axes:e,records:r,labels:s,height:a=280,showAxisLabels:o=!0,dir:g,a11yFallback:u,className:i}){const x={top:12,bottom:o?22:8,near:20,far:20};return n.jsx(N,{labels:s,height:a,...g!==void 0?{dir:g}:{},...u!==void 0?{a11yFallback:u}:{},...i!==void 0?{className:i}:{},padding:{top:x.top,bottom:x.bottom,left:x.near,right:x.far},children:({innerWidth:d,innerHeight:l,rtl:p,mounted:h})=>{if(e.length===0||r.length===0||d<=0||l<=0)return null;const y=nt(e,r,{width:d,height:l,rtl:p}),c=t=>t===void 0?"var(--viz-1)":V(y.segments.indexOf(t));return n.jsxs("g",{className:"adm-chart-fade",style:{"--adm-fade":h?"1":"0"},children:[y.axisX.map((t,f)=>n.jsx("line",{x1:t,x2:t,y1:y.yTop,y2:y.yBottom,stroke:"var(--border-strong)",strokeWidth:1,"data-axis-index":f},e[f]?.key??f)),y.paths.map(t=>n.jsx("path",{d:t.path,fill:"none",stroke:c(t.segment),strokeWidth:1.5,strokeOpacity:.7,strokeLinejoin:"round","data-record-index":t.index,...t.segment!==void 0?{"data-segment":t.segment}:{}},t.index)),o&&y.axisX.map((t,f)=>n.jsx("text",{className:"adm-chart-axis-label",x:t,y:l+15,textAnchor:"middle",children:e[f]?.label??""},`label-${e[f]?.key??f}`))]})}})}function M(){return n.jsx("p",{className:"px-4 pb-4 text-body-sm text-fg-muted",children:"Unexpected data shape."})}function pt({config:e,data:r}){const s=P(r);return s===null||s.groups.length===0?n.jsx(M,{}):n.jsx("div",{className:"px-4 pb-4 compact:px-3 compact:pb-3","data-widget":"chart-boxplot",children:n.jsx(G,{groups:s.groups,labels:{label:e.title??"Box plot"},showAxis:e.showAxis,showCategoryLabels:e.showCategoryLabels,height:e.height})})}function ft({config:e,data:r}){const s=P(r);if(s===null)return n.jsx(M,{});const a=s.groups.filter(o=>o.density!==void 0&&o.density.length>0).map(o=>({label:o.label,min:o.min,max:o.max,med:o.med,density:o.density??[]}));return a.length===0?n.jsx(M,{}):n.jsx("div",{className:"px-4 pb-4 compact:px-3 compact:pb-3","data-widget":"chart-violin",children:n.jsx(K,{groups:a,labels:{label:e.title??"Violin plot"},showAxis:e.showAxis,showCategoryLabels:e.showCategoryLabels,height:e.height})})}function yt({config:e,data:r}){const s=P(r);if(s===null)return n.jsx(M,{});const a=s.groups.filter(o=>o.density!==void 0&&o.density.length>0).map(o=>({label:o.label,density:o.density??[]}));return a.length===0?n.jsx(M,{}):n.jsx("div",{className:"px-4 pb-4 compact:px-3 compact:pb-3","data-widget":"chart-ridgeline",children:n.jsx(H,{groups:a,labels:{label:e.title??"Ridgeline"},overlap:e.overlap,showLabels:e.showLabels,height:e.height})})}function dt(e,r){const s=[];for(const a of e){const o=z(a,r.xField),g=z(a,r.yField);o===void 0||g===void 0||s.push({x:o,y:g,r:r.rField!==void 0?z(a,r.rField):void 0,segment:r.segmentField!==void 0?I(a,r.segmentField):void 0})}return s}function gt({config:e,data:r}){const s=R(r);if(s===null)return n.jsx(M,{});const a=dt(s.rows,e);return a.length===0?n.jsx(M,{}):n.jsx("div",{className:"px-4 pb-4 compact:px-3 compact:pb-3","data-widget":"chart-scatter-bubble",children:n.jsx(rt,{points:a,labels:{label:e.title??"Scatter plot"},trendLine:e.trendLine,showAxis:e.axisLabels,height:e.height})})}function bt({config:e,data:r}){const s=Y(r);return s===null||s.cells.length===0?n.jsx(M,{}):n.jsx("div",{className:"px-4 pb-4 compact:px-3 compact:pb-3","data-widget":"chart-hexbin",children:n.jsx(st,{cells:s.cells,labels:{label:e.title??"Density hexbin"},minAlpha:e.minAlpha,height:e.height})})}function jt({config:e,data:r}){const s=Y(r);return s===null||s.cells.length===0||s.colKeys.length===0?n.jsx(M,{}):n.jsx("div",{className:"px-4 pb-4 compact:px-3 compact:pb-3","data-widget":"chart-correlation-matrix",children:n.jsx(it,{cells:s.cells,columns:s.colKeys,labels:{label:e.title??"Correlation matrix"},showLabels:e.showLabels,strongThreshold:e.strongThreshold,height:e.height})})}function ct(e,r){const s=r.axes;if(s.length<2)return null;const a=s.map(u=>{let i=1/0,x=-1/0;for(const d of e){const l=z(d,u);l!==void 0&&(l<i&&(i=l),l>x&&(x=l))}return i<=x?{min:i,max:x}:{min:0,max:1}}),o=s.map((u,i)=>({key:u,label:u,min:a[i]?.min??0,max:a[i]?.max??1})),g=[];for(const u of e){const i=s.map(x=>z(u,x)??0);g.push({values:i,segment:r.colorBy!==void 0?I(u,r.colorBy):void 0})}return{axes:o,records:g}}function vt({config:e,data:r}){const s=R(r);if(s===null)return n.jsx(M,{});const a=ct(s.rows,e);return a===null||a.records.length===0?n.jsx(M,{}):n.jsx("div",{className:"px-4 pb-4 compact:px-3 compact:pb-3","data-widget":"chart-parallel-coordinates",children:n.jsx(lt,{axes:a.axes,records:a.records,labels:{label:e.title??"Parallel coordinates"},showAxisLabels:e.showAxisLabels,height:e.height})})}export{pt as ChartBoxplotWidget,jt as ChartCorrelationMatrixWidget,bt as ChartHexbinWidget,vt as ChartParallelCoordinatesWidget,yt as ChartRidgelineWidget,gt as ChartScatterBubbleWidget,ft as ChartViolinWidget,ct as parallelInputsOf,dt as scatterPointsOf};
2
+ //# sourceMappingURL=DistributionCorrelationWidgets-ztVy_W_R.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DistributionCorrelationWidgets-ztVy_W_R.js","sources":["../../../../packages/charts/dist/geometry/distribution.js","../../../../packages/charts/dist/components/BoxPlotChart.js","../../../../packages/charts/dist/components/ViolinChart.js","../../../../packages/charts/dist/components/RidgelineChart.js","../../../../packages/charts/dist/geometry/correlation.js","../../../../packages/charts/dist/components/HexbinChart.js","../../../../packages/charts/dist/components/ScatterBubbleChart.js","../../../../packages/charts/dist/components/CorrelationMatrixChart.js","../../../../packages/charts/dist/components/ParallelCoordinatesChart.js","../../../../packages/widgets/dist/families/charts/DistributionCorrelationWidgets.js"],"sourcesContent":["/**\n * Pure, DOM-free layout for the distribution charts (research/widget-registry.md\n * §2): `chart-boxplot`, `chart-violin`, `chart-ridgeline`. Server-safe so\n * scheduled-report workers reuse the exact path strings the browser renders\n * (04 §7.1). Categorical group axes mirror in RTL via the shared band scale;\n * the value axis stays pixel-down. d3-scale/d3-shape math only.\n */\nimport { categoricalBandScale } from './scales.js';\nimport { linePath } from './lineArea.js';\nimport { extent, niceTicks } from '../utils/stats.js';\n/** Linear, pixel-down value axis padded to round ticks. */\nexport function valueAxis(values, height, tickCount = 4) {\n const [lo, hi] = extent(values) ?? [0, 1];\n const ticks = lo === hi ? [lo, lo + 1] : niceTicks(lo, hi, tickCount);\n const domainLo = ticks[0] ?? lo;\n const domainHi = ticks.at(-1) ?? hi + 1;\n const span = domainHi - domainLo || 1;\n return {\n yTicks: ticks,\n domain: [domainLo, domainHi],\n yFor: (value) => height - ((value - domainLo) / span) * height,\n };\n}\n/** Whisker/box/median geometry per category; value axis from all five stats. */\nexport function boxplotLayout(groups, options) {\n const { width, height, rtl, boxFraction = 0.55, tickCount = 4 } = options;\n const axis = valueAxis(groups.flatMap((g) => [g.min, g.max]), height, tickCount);\n const band = categoricalBandScale(groups.map((g) => g.label), width, rtl, { paddingInner: 0.4, paddingOuter: 0.25 });\n const bandwidth = band.bandwidth();\n const boxWidth = Math.max(1, bandwidth * boxFraction);\n const boxes = [];\n for (const group of groups) {\n const bandStart = band(group.label);\n if (bandStart === undefined)\n continue;\n const centerX = bandStart + bandwidth / 2;\n boxes.push({\n label: group.label,\n centerX,\n boxX: centerX - boxWidth / 2,\n boxWidth,\n yMin: axis.yFor(group.min),\n yQ1: axis.yFor(group.q1),\n yMed: axis.yFor(group.med),\n yQ3: axis.yFor(group.q3),\n yMax: axis.yFor(group.max),\n });\n }\n return { boxes, yTicks: axis.yTicks, yFor: axis.yFor, bandwidth };\n}\n/**\n * Mirrored density profile per group. Each density array is normalised by its\n * own peak so every violin fills the band half-width; the sample index maps\n * linearly across the group's [min, max] onto the shared value axis.\n */\nexport function violinLayout(groups, options) {\n const { width, height, rtl, halfWidthFraction = 0.42, tickCount = 4 } = options;\n const axis = valueAxis(groups.flatMap((g) => [g.min, g.max]), height, tickCount);\n const band = categoricalBandScale(groups.map((g) => g.label), width, rtl, { paddingInner: 0.35, paddingOuter: 0.2 });\n const bandwidth = band.bandwidth();\n const halfWidth = Math.max(1, (bandwidth / 2) * halfWidthFraction);\n const violins = [];\n for (const group of groups) {\n const bandStart = band(group.label);\n if (bandStart === undefined)\n continue;\n const centerX = bandStart + bandwidth / 2;\n const n = group.density.length;\n const peak = Math.max(...group.density, 1e-9);\n const valueAt = (i) => n <= 1 ? group.min : group.min + (i / (n - 1)) * (group.max - group.min);\n // Right side top→bottom, then left side bottom→top → closed polygon.\n const right = group.density.map((d, i) => ({\n x: centerX + (d / peak) * halfWidth,\n y: axis.yFor(valueAt(i)),\n }));\n const left = [...group.density]\n .map((d, i) => ({ x: centerX - (d / peak) * halfWidth, y: axis.yFor(valueAt(i)) }))\n .reverse();\n const outline = [...right, ...left];\n const path = outline.length > 0 ? `${linePath(outline) ?? ''}Z` : '';\n violins.push({ label: group.label, centerX, path, medY: axis.yFor(group.med) });\n }\n return { violins, yTicks: axis.yTicks, yFor: axis.yFor, bandwidth };\n}\n/**\n * Overlapping filled density ridges, front row first. Densities share one\n * global peak so ridges are comparable; the value axis runs across the plot\n * width and mirrors in RTL. Rows stack top→bottom with the front (first) row\n * at the bottom, so later ridges overlap upward with decreasing alpha.\n */\nexport function ridgelineLayout(groups, options) {\n const { width, height, rtl, overlap = 1.5, labelGutter = 52, minAlpha = 0.35 } = options;\n const count = groups.length;\n const plotStart = rtl ? 0 : labelGutter;\n const plotEnd = rtl ? width - labelGutter : width;\n const plotWidth = Math.max(1, plotEnd - plotStart);\n const globalPeak = Math.max(...groups.flatMap((g) => [...g.density]), 1e-9);\n const rowStep = count > 0 ? height / count : height;\n const peakHeight = rowStep * overlap;\n const xAt = (i, n) => {\n const t = n <= 1 ? 0 : i / (n - 1);\n return rtl ? plotEnd - t * plotWidth : plotStart + t * plotWidth;\n };\n const rows = groups.map((group, g) => {\n // Front row (g=0) sits lowest; rows stack upward.\n const baselineY = height - g * rowStep;\n const n = group.density.length;\n const top = group.density.map((d, i) => ({\n x: xAt(i, n),\n y: baselineY - (d / globalPeak) * peakHeight,\n }));\n const line = linePath(top) ?? '';\n // Area: top outline then back along the baseline, closed.\n const first = top[0];\n const last = top.at(-1);\n const area = line === '' || first === undefined || last === undefined\n ? ''\n : `${line}L${last.x},${baselineY}L${first.x},${baselineY}Z`;\n const alpha = count <= 1 ? 1 : 1 - (g / (count - 1)) * (1 - minAlpha);\n return {\n label: group.label,\n areaPath: area,\n linePath: line,\n baselineY,\n labelY: baselineY - 4,\n alpha,\n };\n });\n return { rows, plotStart, plotEnd };\n}\n//# sourceMappingURL=distribution.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { boxplotLayout } from '../geometry/distribution.js';\nimport { formatCompact } from '../utils/format.js';\nimport { ChartSurface } from './ChartSurface.js';\nexport function BoxPlotChart({ groups, labels, height = 260, showAxis = true, showCategoryLabels = true, formatY = formatCompact, dir, a11yFallback, className, }) {\n const pad = {\n top: 8,\n bottom: showCategoryLabels ? 22 : 6,\n near: showAxis ? 40 : 6,\n far: 10,\n };\n return (_jsx(ChartSurface, { labels: labels, height: height, ...(dir !== undefined ? { dir } : {}), ...(a11yFallback !== undefined ? { a11yFallback } : {}), ...(className !== undefined ? { className } : {}), padding: { top: pad.top, bottom: pad.bottom, left: pad.near, right: pad.far }, children: ({ innerWidth, innerHeight, rtl, mounted }) => {\n if (groups.length === 0 || innerWidth <= 0 || innerHeight <= 0)\n return null;\n const layout = boxplotLayout(groups, { width: innerWidth, height: innerHeight, rtl });\n return (_jsxs(\"g\", { className: \"adm-chart-fade\", style: { '--adm-fade': mounted ? '1' : '0' }, children: [showAxis &&\n layout.yTicks.map((tick) => (_jsxs(\"g\", { children: [_jsx(\"line\", { className: \"adm-chart-gridline\", x1: 0, x2: innerWidth, y1: layout.yFor(tick), y2: layout.yFor(tick) }), _jsx(\"text\", { className: \"adm-chart-axis-label adm-chart-num\", x: rtl ? innerWidth + 6 : -6, y: layout.yFor(tick) + 3, textAnchor: rtl ? 'start' : 'end', children: formatY(tick) })] }, tick))), layout.boxes.map((box) => {\n const capHalf = box.boxWidth / 2;\n return (_jsxs(\"g\", { \"data-box\": box.label, children: [_jsx(\"line\", { x1: box.centerX, x2: box.centerX, y1: box.yMax, y2: box.yMin, stroke: \"var(--viz-1)\", strokeWidth: 1.5 }), _jsx(\"line\", { x1: box.centerX - capHalf / 2, x2: box.centerX + capHalf / 2, y1: box.yMax, y2: box.yMax, stroke: \"var(--viz-1)\", strokeWidth: 1.5 }), _jsx(\"line\", { x1: box.centerX - capHalf / 2, x2: box.centerX + capHalf / 2, y1: box.yMin, y2: box.yMin, stroke: \"var(--viz-1)\", strokeWidth: 1.5 }), _jsx(\"rect\", { x: box.boxX, y: box.yQ3, width: box.boxWidth, height: Math.max(0, box.yQ1 - box.yQ3), rx: 2, fill: \"var(--accent-area)\", stroke: \"var(--viz-1)\", strokeWidth: 1.5, \"data-box-rect\": \"\" }), _jsx(\"line\", { x1: box.boxX, x2: box.boxX + box.boxWidth, y1: box.yMed, y2: box.yMed, stroke: \"var(--viz-1)\", strokeWidth: 2, \"data-median\": \"\" })] }, box.label));\n }), showCategoryLabels &&\n layout.boxes.map((box) => (_jsx(\"text\", { className: \"adm-chart-axis-label\", x: box.centerX, y: innerHeight + 15, textAnchor: \"middle\", children: box.label }, box.label)))] }));\n } }));\n}\n//# sourceMappingURL=BoxPlotChart.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { violinLayout } from '../geometry/distribution.js';\nimport { formatCompact } from '../utils/format.js';\nimport { ChartSurface } from './ChartSurface.js';\nexport function ViolinChart({ groups, labels, height = 260, showAxis = true, showCategoryLabels = true, formatY = formatCompact, dir, a11yFallback, className, }) {\n const pad = {\n top: 8,\n bottom: showCategoryLabels ? 22 : 6,\n near: showAxis ? 40 : 6,\n far: 10,\n };\n return (_jsx(ChartSurface, { labels: labels, height: height, ...(dir !== undefined ? { dir } : {}), ...(a11yFallback !== undefined ? { a11yFallback } : {}), ...(className !== undefined ? { className } : {}), padding: { top: pad.top, bottom: pad.bottom, left: pad.near, right: pad.far }, children: ({ innerWidth, innerHeight, rtl, mounted }) => {\n if (groups.length === 0 || innerWidth <= 0 || innerHeight <= 0)\n return null;\n const layout = violinLayout(groups, { width: innerWidth, height: innerHeight, rtl });\n return (_jsxs(\"g\", { className: \"adm-chart-fade\", style: { '--adm-fade': mounted ? '1' : '0' }, children: [showAxis &&\n layout.yTicks.map((tick) => (_jsxs(\"g\", { children: [_jsx(\"line\", { className: \"adm-chart-gridline\", x1: 0, x2: innerWidth, y1: layout.yFor(tick), y2: layout.yFor(tick) }), _jsx(\"text\", { className: \"adm-chart-axis-label adm-chart-num\", x: rtl ? innerWidth + 6 : -6, y: layout.yFor(tick) + 3, textAnchor: rtl ? 'start' : 'end', children: formatY(tick) })] }, tick))), layout.violins.map((violin) => (_jsxs(\"g\", { \"data-violin\": violin.label, children: [_jsx(\"path\", { d: violin.path, fill: \"var(--accent-area)\", stroke: \"var(--viz-1)\", strokeWidth: 1.5, \"data-violin-path\": \"\" }), _jsx(\"line\", { x1: violin.centerX - layout.bandwidth * 0.24, x2: violin.centerX + layout.bandwidth * 0.24, y1: violin.medY, y2: violin.medY, stroke: \"var(--viz-1)\", strokeWidth: 2, \"data-median\": \"\" })] }, violin.label))), showCategoryLabels &&\n layout.violins.map((violin) => (_jsx(\"text\", { className: \"adm-chart-axis-label\", x: violin.centerX, y: innerHeight + 15, textAnchor: \"middle\", children: violin.label }, violin.label)))] }));\n } }));\n}\n//# sourceMappingURL=ViolinChart.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { ridgelineLayout } from '../geometry/distribution.js';\nimport { ChartSurface } from './ChartSurface.js';\nexport function RidgelineChart({ groups, labels, height = 260, overlap = 1.5, showLabels = true, dir, a11yFallback, className, }) {\n return (_jsx(ChartSurface, { labels: labels, height: height, ...(dir !== undefined ? { dir } : {}), ...(a11yFallback !== undefined ? { a11yFallback } : {}), ...(className !== undefined ? { className } : {}), padding: { top: 10, bottom: 8, left: 8, right: 8 }, children: ({ innerWidth, innerHeight, rtl, mounted }) => {\n if (groups.length === 0 || innerWidth <= 0 || innerHeight <= 0)\n return null;\n const layout = ridgelineLayout(groups, {\n width: innerWidth,\n height: innerHeight,\n rtl,\n overlap,\n labelGutter: showLabels ? 52 : 8,\n });\n // Render back-to-front so nearer ridges overlap farther ones.\n const ordered = [...layout.rows].reverse();\n return (_jsx(\"g\", { className: \"adm-chart-fade\", style: { '--adm-fade': mounted ? '1' : '0' }, children: ordered.map((row) => (_jsxs(\"g\", { \"data-ridge\": row.label, children: [_jsx(\"path\", { d: row.areaPath, fill: \"var(--accent)\", fillOpacity: row.alpha * 0.55, \"data-ridge-area\": \"\" }), _jsx(\"path\", { d: row.linePath, fill: \"none\", stroke: \"var(--viz-1)\", strokeWidth: 1.5, strokeOpacity: row.alpha, \"data-ridge-line\": \"\" }), showLabels && (_jsx(\"text\", { className: \"adm-chart-axis-label\", x: rtl ? innerWidth : 0, y: row.labelY, textAnchor: rtl ? 'end' : 'start', children: row.label }))] }, row.label))) }));\n } }));\n}\n//# sourceMappingURL=RidgelineChart.js.map","/**\n * Pure, DOM-free layout for the correlation charts (research/widget-registry.md\n * §2): `chart-scatter-bubble`, `chart-hexbin`, `chart-correlation-matrix`,\n * `chart-parallel-coordinates`. Server-safe (04 §7.1). Horizontal value /\n * grid / axis order mirrors in RTL; the vertical value axis stays pixel-down.\n */\nimport { linePath } from './lineArea.js';\nimport { extent, niceTicks } from '../utils/stats.js';\nimport { valueAxis } from './distribution.js';\n/** Least-squares fit over data-space points; null when < 2 points or flat x. */\nfunction leastSquares(points) {\n const n = points.length;\n if (n < 2)\n return null;\n let sx = 0;\n let sy = 0;\n let sxx = 0;\n let sxy = 0;\n for (const p of points) {\n sx += p.x;\n sy += p.y;\n sxx += p.x * p.x;\n sxy += p.x * p.y;\n }\n const denom = n * sxx - sx * sx;\n if (denom === 0)\n return null;\n const slope = (n * sxy - sx * sy) / denom;\n const intercept = (sy - slope * sx) / n;\n return { slope, intercept };\n}\n/**\n * Scatter with an optional bubble-radius dimension, gridlines, distinct-segment\n * legend, and a dashed least-squares trend line. The x value axis mirrors in\n * RTL (range flip); y stays pixel-down. Bubble radius scales from the `r`\n * extent so tests can assert a stable ordering.\n */\nexport function scatterLayout(points, options) {\n const { width, height, rtl, radiusRange = [3, 15], fixedRadius = 4, trendLine = true, tickCount = 4 } = options;\n const xDomain = niceTicks(...(extent(points.map((p) => p.x)) ?? [0, 1]), tickCount);\n const xLo = xDomain[0] ?? 0;\n const xHi = xDomain.at(-1) ?? 1;\n const xSpan = xHi - xLo || 1;\n const xFor = (value) => {\n const t = (value - xLo) / xSpan;\n return rtl ? width - t * width : t * width;\n };\n const yAxis = valueAxis(points.map((p) => p.y), height, tickCount);\n const sized = points.some((p) => typeof p.r === 'number');\n const [rMin, rMax] = radiusRange;\n const rExtent = extent(points.map((p) => p.r ?? 0));\n const rLo = rExtent?.[0] ?? 0;\n const rHi = rExtent?.[1] ?? 1;\n const rSpan = rHi - rLo || 1;\n const radiusFor = (r) => {\n if (!sized || r === undefined)\n return fixedRadius;\n return rMin + ((r - rLo) / rSpan) * (rMax - rMin);\n };\n const segments = [];\n const marks = points.map((p, index) => {\n if (p.segment !== undefined && !segments.includes(p.segment))\n segments.push(p.segment);\n return { index, cx: xFor(p.x), cy: yAxis.yFor(p.y), r: radiusFor(p.r), segment: p.segment };\n });\n let trend = null;\n if (trendLine) {\n const fit = leastSquares(points);\n if (fit !== null) {\n trend = {\n x1: xFor(xLo),\n y1: yAxis.yFor(fit.slope * xLo + fit.intercept),\n x2: xFor(xHi),\n y2: yAxis.yFor(fit.slope * xHi + fit.intercept),\n };\n }\n }\n return { marks, xTicks: xDomain, yTicks: yAxis.yTicks, xFor, yFor: yAxis.yFor, trend, segments };\n}\nconst SQRT3 = Math.sqrt(3);\n/**\n * Pointy-top hex-grid centers fitted to the box. Odd rows offset by half a\n * column so the tessellation interlocks; columns mirror in RTL. Callers map a\n * per-cell count to fill alpha and omit sparse (null/0) cells (annex §2).\n */\nexport function hexbinLayout(options) {\n const { rows, cols, width, height, rtl } = options;\n const safeCols = Math.max(1, cols);\n const safeRows = Math.max(1, rows);\n // Pointy-top: horizontal pitch = √3·r, vertical pitch = 1.5·r, odd-row shift = √3/2·r.\n const rByWidth = width / (SQRT3 * (safeCols + 0.5));\n const rByHeight = height / (1.5 * safeRows + 0.5);\n const radius = Math.max(1, Math.min(rByWidth, rByHeight));\n const hpitch = SQRT3 * radius;\n const vpitch = 1.5 * radius;\n const cells = [];\n for (let row = 0; row < safeRows; row += 1) {\n for (let col = 0; col < safeCols; col += 1) {\n const offset = row % 2 === 1 ? hpitch / 2 : 0;\n const rawX = radius * (SQRT3 / 2) + offset + col * hpitch;\n const cx = rtl ? width - rawX : rawX;\n const cy = radius + row * vpitch;\n cells.push({ row, col, cx, cy });\n }\n }\n const hexPoints = (cx, cy) => Array.from({ length: 6 }, (_, k) => {\n const angle = (Math.PI / 180) * (60 * k - 90);\n return `${(cx + radius * Math.cos(angle)).toFixed(3)},${(cy + radius * Math.sin(angle)).toFixed(3)}`;\n }).join(' ');\n return { cells, radius, hexPoints };\n}\n/** Uniform cell grid; column order mirrors in RTL, rows stay top→bottom. */\nexport function matrixGridLayout(options) {\n const { rows, cols, width, height, rtl, gap = 2 } = options;\n const safeCols = Math.max(1, cols);\n const safeRows = Math.max(1, rows);\n const cellW = (width - gap * (safeCols - 1)) / safeCols;\n const cellH = (height - gap * (safeRows - 1)) / safeRows;\n const colX = (col) => (rtl ? safeCols - 1 - col : col) * (cellW + gap);\n const rowY = (row) => row * (cellH + gap);\n const cells = [];\n for (let row = 0; row < safeRows; row += 1) {\n for (let col = 0; col < safeCols; col += 1) {\n cells.push({ row, col, x: colX(col), y: rowY(row), w: Math.max(0, cellW), h: Math.max(0, cellH) });\n }\n }\n return { cells, cellW, cellH, colX, rowY };\n}\n/**\n * Evenly spaced vertical axes with one polyline per record. Axis order mirrors\n * in RTL (first axis at inline-start). Each value is normalised within its\n * axis's [min, max] onto the shared vertical extent (pixel-down).\n */\nexport function parallelLayout(axes, records, options) {\n const { width, height, rtl = false, padY = 8 } = options;\n const count = axes.length;\n const yTop = padY;\n const yBottom = height - padY;\n const span = yBottom - yTop || 1;\n const axisX = axes.map((_, i) => {\n const t = count <= 1 ? 0.5 : i / (count - 1);\n return rtl ? width - t * width : t * width;\n });\n const yForAxis = (axisIndex, value) => {\n const axis = axes[axisIndex];\n if (axis === undefined)\n return yBottom;\n const range = axis.max - axis.min || 1;\n const t = (value - axis.min) / range;\n return yBottom - t * span;\n };\n const segments = [];\n const paths = records.map((record, index) => {\n if (record.segment !== undefined && !segments.includes(record.segment))\n segments.push(record.segment);\n const points = axes.map((_, i) => ({ x: axisX[i] ?? 0, y: yForAxis(i, record.values[i] ?? 0) }));\n return { index, path: linePath(points) ?? '', segment: record.segment };\n });\n return { axisX, yTop, yBottom, paths, segments, yForAxis };\n}\n//# sourceMappingURL=correlation.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { hexbinLayout } from '../geometry/correlation.js';\nimport { ChartSurface } from './ChartSurface.js';\nfunction maxCount(cells) {\n let max = 0;\n for (const row of cells) {\n for (const value of row) {\n if (typeof value === 'number' && value > max)\n max = value;\n }\n }\n return max;\n}\nexport function HexbinChart({ cells, labels, height = 260, minAlpha = 0.18, dir, a11yFallback, className, }) {\n const rows = cells.length;\n const cols = cells.reduce((widest, row) => Math.max(widest, row.length), 0);\n const peak = maxCount(cells);\n return (_jsx(ChartSurface, { labels: labels, height: height, ...(dir !== undefined ? { dir } : {}), ...(a11yFallback !== undefined ? { a11yFallback } : {}), ...(className !== undefined ? { className } : {}), padding: { top: 6, bottom: 6, left: 6, right: 6 }, children: ({ innerWidth, innerHeight, rtl, mounted }) => {\n if (rows === 0 || cols === 0 || innerWidth <= 0 || innerHeight <= 0)\n return null;\n const layout = hexbinLayout({ rows, cols, width: innerWidth, height: innerHeight, rtl });\n return (_jsx(\"g\", { className: \"adm-chart-fade\", style: { '--adm-fade': mounted ? '1' : '0' }, children: layout.cells.map((cell) => {\n const count = cells[cell.row]?.[cell.col];\n if (typeof count !== 'number' || count <= 0)\n return null;\n const alpha = peak > 0 ? minAlpha + (count / peak) * (1 - minAlpha) : minAlpha;\n return (_jsx(\"polygon\", { points: layout.hexPoints(cell.cx, cell.cy), fill: \"var(--accent)\", fillOpacity: alpha, stroke: \"var(--surface)\", strokeWidth: 1, \"data-hex-row\": cell.row, \"data-hex-col\": cell.col, \"data-count\": count }, `${cell.row}-${cell.col}`));\n }) }));\n } }));\n}\n//# sourceMappingURL=HexbinChart.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { scatterLayout } from '../geometry/correlation.js';\nimport { formatCompact } from '../utils/format.js';\nimport { ChartSurface } from './ChartSurface.js';\n/** Canonical 8-color viz palette (viz.css); series i → --viz-((i mod 8)+1). */\nconst VIZ_VARS = [\n 'var(--viz-1)',\n 'var(--viz-2)',\n 'var(--viz-3)',\n 'var(--viz-4)',\n 'var(--viz-5)',\n 'var(--viz-6)',\n 'var(--viz-7)',\n 'var(--viz-8)',\n];\nexport function vizColorAt(index) {\n return VIZ_VARS[((index % VIZ_VARS.length) + VIZ_VARS.length) % VIZ_VARS.length];\n}\nexport function ScatterBubbleChart({ points, labels, height = 280, showAxis = true, trendLine = true, formatX = formatCompact, formatY = formatCompact, dir, a11yFallback, className, }) {\n const pad = { top: 10, bottom: showAxis ? 22 : 8, near: showAxis ? 40 : 8, far: 14 };\n return (_jsx(ChartSurface, { labels: labels, height: height, ...(dir !== undefined ? { dir } : {}), ...(a11yFallback !== undefined ? { a11yFallback } : {}), ...(className !== undefined ? { className } : {}), padding: { top: pad.top, bottom: pad.bottom, left: pad.near, right: pad.far }, children: ({ innerWidth, innerHeight, rtl, mounted }) => {\n if (points.length === 0 || innerWidth <= 0 || innerHeight <= 0)\n return null;\n const layout = scatterLayout(points, { width: innerWidth, height: innerHeight, rtl, trendLine });\n const segmentColor = (segment) => segment === undefined ? 'var(--viz-1)' : vizColorAt(layout.segments.indexOf(segment));\n return (_jsxs(\"g\", { className: \"adm-chart-fade\", style: { '--adm-fade': mounted ? '1' : '0' }, children: [showAxis &&\n layout.yTicks.map((tick) => (_jsxs(\"g\", { children: [_jsx(\"line\", { className: \"adm-chart-gridline\", x1: 0, x2: innerWidth, y1: layout.yFor(tick), y2: layout.yFor(tick) }), _jsx(\"text\", { className: \"adm-chart-axis-label adm-chart-num\", x: rtl ? innerWidth + 6 : -6, y: layout.yFor(tick) + 3, textAnchor: rtl ? 'start' : 'end', children: formatY(tick) })] }, `y${tick}`))), showAxis &&\n layout.xTicks.map((tick) => (_jsx(\"text\", { className: \"adm-chart-axis-label adm-chart-num\", x: layout.xFor(tick), y: innerHeight + 15, textAnchor: \"middle\", children: formatX(tick) }, `x${tick}`))), trendLine && layout.trend !== null && (_jsx(\"line\", { x1: layout.trend.x1, y1: layout.trend.y1, x2: layout.trend.x2, y2: layout.trend.y2, stroke: \"var(--fg-subtle)\", strokeWidth: 1.5, strokeDasharray: \"5 4\", \"data-trend\": \"\" })), layout.marks.map((mark) => (_jsx(\"circle\", { cx: mark.cx, cy: mark.cy, r: mark.r, fill: segmentColor(mark.segment), fillOpacity: 0.72, stroke: \"var(--surface)\", strokeWidth: 1, \"data-point-index\": mark.index, ...(mark.segment !== undefined ? { 'data-segment': mark.segment } : {}) }, mark.index)))] }));\n } }));\n}\n//# sourceMappingURL=ScatterBubbleChart.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { matrixGridLayout } from '../geometry/correlation.js';\nimport { ChartSurface } from './ChartSurface.js';\nfunction formatR(value) {\n const fixed = value.toFixed(2);\n return fixed === '-0.00' ? '0.00' : fixed;\n}\nexport function CorrelationMatrixChart({ cells, columns, labels, height = 260, showLabels = true, strongThreshold = 0.55, dir, a11yFallback, className, }) {\n const rows = cells.length;\n const cols = columns.length;\n const pad = { top: showLabels ? 18 : 6, bottom: 6, near: showLabels ? 68 : 6, far: 8 };\n return (_jsx(ChartSurface, { labels: labels, height: height, ...(dir !== undefined ? { dir } : {}), ...(a11yFallback !== undefined ? { a11yFallback } : {}), ...(className !== undefined ? { className } : {}), padding: { top: pad.top, bottom: pad.bottom, left: pad.near, right: pad.far }, children: ({ innerWidth, innerHeight, rtl, mounted }) => {\n if (rows === 0 || cols === 0 || innerWidth <= 0 || innerHeight <= 0)\n return null;\n const layout = matrixGridLayout({ rows, cols, width: innerWidth, height: innerHeight, rtl });\n const showText = layout.cellW >= 26 && layout.cellH >= 18;\n return (_jsxs(\"g\", { className: \"adm-chart-fade\", style: { '--adm-fade': mounted ? '1' : '0' }, children: [layout.cells.map((cell) => {\n const r = cells[cell.row]?.[cell.col];\n if (typeof r !== 'number')\n return null;\n const magnitude = Math.min(1, Math.abs(r));\n const strong = magnitude >= strongThreshold;\n return (_jsxs(\"g\", { \"data-cell-row\": cell.row, \"data-cell-col\": cell.col, children: [_jsx(\"rect\", { x: cell.x, y: cell.y, width: cell.w, height: cell.h, rx: 3, fill: r >= 0 ? 'var(--accent)' : 'var(--danger)', fillOpacity: 0.12 + magnitude * 0.88, \"data-sign\": r >= 0 ? 'pos' : 'neg' }), showText && (_jsx(\"text\", { className: \"adm-chart-num\", x: cell.x + cell.w / 2, y: cell.y + cell.h / 2 + 3, textAnchor: \"middle\", fontSize: 10, fontWeight: 600, fill: strong ? 'var(--accent-fg)' : 'var(--fg-muted)', children: formatR(r) }))] }, `${cell.row}-${cell.col}`));\n }), showLabels &&\n columns.map((label, col) => (_jsx(\"text\", { className: \"adm-chart-axis-label\", x: layout.colX(col) + layout.cellW / 2, y: -6, textAnchor: \"middle\", children: label }, `col-${label}`))), showLabels &&\n columns.map((label, row) => row < rows ? (_jsx(\"text\", { className: \"adm-chart-axis-label\", x: rtl ? innerWidth + 6 : -6, y: layout.rowY(row) + layout.cellH / 2 + 3, textAnchor: rtl ? 'start' : 'end', children: label }, `row-${label}`)) : null)] }));\n } }));\n}\n//# sourceMappingURL=CorrelationMatrixChart.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { parallelLayout } from '../geometry/correlation.js';\nimport { ChartSurface } from './ChartSurface.js';\nimport { vizColorAt } from './ScatterBubbleChart.js';\nexport function ParallelCoordinatesChart({ axes, records, labels, height = 280, showAxisLabels = true, dir, a11yFallback, className, }) {\n const pad = { top: 12, bottom: showAxisLabels ? 22 : 8, near: 20, far: 20 };\n return (_jsx(ChartSurface, { labels: labels, height: height, ...(dir !== undefined ? { dir } : {}), ...(a11yFallback !== undefined ? { a11yFallback } : {}), ...(className !== undefined ? { className } : {}), padding: { top: pad.top, bottom: pad.bottom, left: pad.near, right: pad.far }, children: ({ innerWidth, innerHeight, rtl, mounted }) => {\n if (axes.length === 0 || records.length === 0 || innerWidth <= 0 || innerHeight <= 0)\n return null;\n const layout = parallelLayout(axes, records, { width: innerWidth, height: innerHeight, rtl });\n const recordColor = (segment) => segment === undefined ? 'var(--viz-1)' : vizColorAt(layout.segments.indexOf(segment));\n return (_jsxs(\"g\", { className: \"adm-chart-fade\", style: { '--adm-fade': mounted ? '1' : '0' }, children: [layout.axisX.map((x, i) => (_jsx(\"line\", { x1: x, x2: x, y1: layout.yTop, y2: layout.yBottom, stroke: \"var(--border-strong)\", strokeWidth: 1, \"data-axis-index\": i }, axes[i]?.key ?? i))), layout.paths.map((record) => (_jsx(\"path\", { d: record.path, fill: \"none\", stroke: recordColor(record.segment), strokeWidth: 1.5, strokeOpacity: 0.7, strokeLinejoin: \"round\", \"data-record-index\": record.index, ...(record.segment !== undefined ? { 'data-segment': record.segment } : {}) }, record.index))), showAxisLabels &&\n layout.axisX.map((x, i) => (_jsx(\"text\", { className: \"adm-chart-axis-label\", x: x, y: innerHeight + 15, textAnchor: \"middle\", children: axes[i]?.label ?? '' }, `label-${axes[i]?.key ?? i}`)))] }));\n } }));\n}\n//# sourceMappingURL=ParallelCoordinatesChart.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Distribution & correlation charts group (04-T09): registry wrappers mapping\n * stored instance config + §3 envelopes onto the @adminium/charts primitives\n * (`chart-boxplot`, `chart-violin`, `chart-ridgeline`, `chart-scatter-bubble`,\n * `chart-hexbin`, `chart-correlation-matrix`, `chart-parallel-coordinates`).\n * Components render only the loaded state; accessible names come from\n * config.title (the primitive renders it as the SVG aria-label).\n */\nimport { BoxPlotChart, CorrelationMatrixChart, HexbinChart, ParallelCoordinatesChart, RidgelineChart, ScatterBubbleChart, ViolinChart, } from '@adminium/charts';\nimport { asDistribution, asMatrix, asRecordList, rowNumber, rowString, } from './distributionShapes.js';\nfunction BadShape() {\n return _jsx(\"p\", { className: \"px-4 pb-4 text-body-sm text-fg-muted\", children: \"Unexpected data shape.\" });\n}\n// --- chart-boxplot -----------------------------------------------------------\nexport function ChartBoxplotWidget({ config, data }) {\n const distribution = asDistribution(data);\n if (distribution === null || distribution.groups.length === 0)\n return _jsx(BadShape, {});\n return (_jsx(\"div\", { className: \"px-4 pb-4 compact:px-3 compact:pb-3\", \"data-widget\": \"chart-boxplot\", children: _jsx(BoxPlotChart, { groups: distribution.groups, labels: { label: config.title ?? 'Box plot' }, showAxis: config.showAxis, showCategoryLabels: config.showCategoryLabels, height: config.height }) }));\n}\n// --- chart-violin ------------------------------------------------------------\nexport function ChartViolinWidget({ config, data }) {\n const distribution = asDistribution(data);\n if (distribution === null)\n return _jsx(BadShape, {});\n const groups = distribution.groups\n .filter((g) => g.density !== undefined && g.density.length > 0)\n .map((g) => ({ label: g.label, min: g.min, max: g.max, med: g.med, density: g.density ?? [] }));\n if (groups.length === 0)\n return _jsx(BadShape, {});\n return (_jsx(\"div\", { className: \"px-4 pb-4 compact:px-3 compact:pb-3\", \"data-widget\": \"chart-violin\", children: _jsx(ViolinChart, { groups: groups, labels: { label: config.title ?? 'Violin plot' }, showAxis: config.showAxis, showCategoryLabels: config.showCategoryLabels, height: config.height }) }));\n}\n// --- chart-ridgeline ---------------------------------------------------------\nexport function ChartRidgelineWidget({ config, data }) {\n const distribution = asDistribution(data);\n if (distribution === null)\n return _jsx(BadShape, {});\n const groups = distribution.groups\n .filter((g) => g.density !== undefined && g.density.length > 0)\n .map((g) => ({ label: g.label, density: g.density ?? [] }));\n if (groups.length === 0)\n return _jsx(BadShape, {});\n return (_jsx(\"div\", { className: \"px-4 pb-4 compact:px-3 compact:pb-3\", \"data-widget\": \"chart-ridgeline\", children: _jsx(RidgelineChart, { groups: groups, labels: { label: config.title ?? 'Ridgeline' }, overlap: config.overlap, showLabels: config.showLabels, height: config.height }) }));\n}\n// --- chart-scatter-bubble ----------------------------------------------------\n/** Projects record-list rows onto scatter points via the config field mapping. */\nexport function scatterPointsOf(rows, config) {\n const points = [];\n for (const row of rows) {\n const x = rowNumber(row, config.xField);\n const y = rowNumber(row, config.yField);\n if (x === undefined || y === undefined)\n continue;\n points.push({\n x,\n y,\n r: config.rField !== undefined ? rowNumber(row, config.rField) : undefined,\n segment: config.segmentField !== undefined ? rowString(row, config.segmentField) : undefined,\n });\n }\n return points;\n}\nexport function ChartScatterBubbleWidget({ config, data }) {\n const list = asRecordList(data);\n if (list === null)\n return _jsx(BadShape, {});\n const points = scatterPointsOf(list.rows, config);\n if (points.length === 0)\n return _jsx(BadShape, {});\n return (_jsx(\"div\", { className: \"px-4 pb-4 compact:px-3 compact:pb-3\", \"data-widget\": \"chart-scatter-bubble\", children: _jsx(ScatterBubbleChart, { points: points, labels: { label: config.title ?? 'Scatter plot' }, trendLine: config.trendLine, showAxis: config.axisLabels, height: config.height }) }));\n}\n// --- chart-hexbin ------------------------------------------------------------\nexport function ChartHexbinWidget({ config, data }) {\n const matrix = asMatrix(data);\n if (matrix === null || matrix.cells.length === 0)\n return _jsx(BadShape, {});\n return (_jsx(\"div\", { className: \"px-4 pb-4 compact:px-3 compact:pb-3\", \"data-widget\": \"chart-hexbin\", children: _jsx(HexbinChart, { cells: matrix.cells, labels: { label: config.title ?? 'Density hexbin' }, minAlpha: config.minAlpha, height: config.height }) }));\n}\n// --- chart-correlation-matrix ------------------------------------------------\nexport function ChartCorrelationMatrixWidget({ config, data }) {\n const matrix = asMatrix(data);\n if (matrix === null || matrix.cells.length === 0 || matrix.colKeys.length === 0)\n return _jsx(BadShape, {});\n return (_jsx(\"div\", { className: \"px-4 pb-4 compact:px-3 compact:pb-3\", \"data-widget\": \"chart-correlation-matrix\", children: _jsx(CorrelationMatrixChart, { cells: matrix.cells, columns: matrix.colKeys, labels: { label: config.title ?? 'Correlation matrix' }, showLabels: config.showLabels, strongThreshold: config.strongThreshold, height: config.height }) }));\n}\n// --- chart-parallel-coordinates ----------------------------------------------\n/** Builds normalised axes + one record per row from the config axis columns. */\nexport function parallelInputsOf(rows, config) {\n const keys = config.axes;\n if (keys.length < 2)\n return null;\n const bounds = keys.map((key) => {\n let min = Infinity;\n let max = -Infinity;\n for (const row of rows) {\n const value = rowNumber(row, key);\n if (value === undefined)\n continue;\n if (value < min)\n min = value;\n if (value > max)\n max = value;\n }\n return min <= max ? { min, max } : { min: 0, max: 1 };\n });\n const axes = keys.map((key, i) => ({\n key,\n label: key,\n min: bounds[i]?.min ?? 0,\n max: bounds[i]?.max ?? 1,\n }));\n const records = [];\n for (const row of rows) {\n const values = keys.map((key) => rowNumber(row, key) ?? 0);\n records.push({\n values,\n segment: config.colorBy !== undefined ? rowString(row, config.colorBy) : undefined,\n });\n }\n return { axes, records };\n}\nexport function ChartParallelCoordinatesWidget({ config, data }) {\n const list = asRecordList(data);\n if (list === null)\n return _jsx(BadShape, {});\n const inputs = parallelInputsOf(list.rows, config);\n if (inputs === null || inputs.records.length === 0)\n return _jsx(BadShape, {});\n return (_jsx(\"div\", { className: \"px-4 pb-4 compact:px-3 compact:pb-3\", \"data-widget\": \"chart-parallel-coordinates\", children: _jsx(ParallelCoordinatesChart, { axes: inputs.axes, records: inputs.records, labels: { label: config.title ?? 'Parallel coordinates' }, showAxisLabels: config.showAxisLabels, height: config.height }) }));\n}\n//# sourceMappingURL=DistributionCorrelationWidgets.js.map"],"names":["valueAxis","values","height","tickCount","lo","hi","extent","ticks","niceTicks","domainLo","domainHi","span","value","boxplotLayout","groups","options","width","rtl","boxFraction","axis","g","band","categoricalBandScale","bandwidth","boxWidth","boxes","group","bandStart","centerX","violinLayout","halfWidthFraction","halfWidth","violins","n","peak","valueAt","i","right","d","left","outline","path","linePath","ridgelineLayout","overlap","labelGutter","minAlpha","count","plotStart","plotEnd","plotWidth","globalPeak","rowStep","peakHeight","xAt","t","baselineY","top","line","first","last","area","alpha","BoxPlotChart","labels","showAxis","showCategoryLabels","formatY","formatCompact","dir","a11yFallback","className","pad","_jsx","ChartSurface","innerWidth","innerHeight","mounted","layout","_jsxs","tick","box","capHalf","ViolinChart","violin","RidgelineChart","showLabels","ordered","row","leastSquares","points","sx","sy","sxx","sxy","p","denom","slope","intercept","scatterLayout","radiusRange","fixedRadius","trendLine","xDomain","xLo","xHi","xSpan","xFor","yAxis","sized","rMin","rMax","rExtent","rLo","rSpan","radiusFor","r","segments","marks","index","trend","fit","SQRT3","hexbinLayout","rows","cols","safeCols","safeRows","rByWidth","rByHeight","radius","hpitch","vpitch","cells","col","offset","rawX","cx","cy","_","k","angle","matrixGridLayout","gap","cellW","cellH","colX","rowY","parallelLayout","axes","records","padY","yTop","yBottom","axisX","yForAxis","axisIndex","range","paths","record","maxCount","max","HexbinChart","widest","cell","VIZ_VARS","vizColorAt","ScatterBubbleChart","formatX","segmentColor","segment","mark","formatR","fixed","CorrelationMatrixChart","columns","strongThreshold","showText","magnitude","strong","label","ParallelCoordinatesChart","showAxisLabels","recordColor","x","BadShape","ChartBoxplotWidget","config","data","distribution","asDistribution","ChartViolinWidget","ChartRidgelineWidget","scatterPointsOf","rowNumber","y","rowString","ChartScatterBubbleWidget","list","asRecordList","ChartHexbinWidget","matrix","asMatrix","ChartCorrelationMatrixWidget","parallelInputsOf","keys","bounds","key","min","ChartParallelCoordinatesWidget","inputs"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{j as a,cq as P,cr as L,u as k,fs as _,a3 as D,a5 as H,ft as G,fu as q,fv as J,fw as Q,fx as Y,fy as Z}from"./index-PB1II0WV.js";import{f as U}from"./format-Lx4cQ8k-.js";import{a as z}from"./arc-CPxb74pf.js";function K(t){return`var(--viz-${t%8+1})`}function tt(t,s){if(s<=1)return"var(--viz-ramp-6)";const e=6-Math.round(t/(s-1)*5);return`var(--viz-ramp-${Math.min(6,Math.max(1,e))})`}function T(t,s){if(s<=0||t.length===0)return 1/0;let e=1/0,i=-1/0,m=0;for(const l of t)l<e&&(e=l),l>i&&(i=l),m+=l;const x=s*s,u=m*m;return Math.max(x*i/u,u/(x*e))}function et(t,s){const{width:e,height:i,maxTiles:m=1/0,otherLabel:x="Other"}=s;if(e<=0||i<=0)return[];let u=t.filter(r=>Number.isFinite(r.value)&&r.value>0);const l=new Map;if(u.forEach((r,p)=>l.set(r,p)),Number.isFinite(m)&&u.length>m){const r=u.slice(0,m),p=u.slice(m).reduce(($,j)=>$+j.value,0),w={label:x,value:p};l.set(w,m),u=[...r,w]}const h=u.reduce((r,p)=>r+p.value,0);if(h<=0)return[];const f=e*i,v=u.map((r,p)=>({item:r,index:p,area:r.value/h*f})).sort((r,p)=>p.area-r.area||r.index-p.index),b=[],o={x:0,y:0,width:e,height:i};let d=[];const g=()=>Math.min(o.width,o.height),n=()=>{if(d.length===0)return;const r=d.reduce((w,$)=>w+$.area,0);if(o.width>=o.height){const w=r/o.height;let $=o.y;for(const j of d){const y=j.area/r*o.height;b.push({index:j.index,x:o.x,y:$,width:w,height:y}),$+=y}o.x+=w,o.width-=w}else{const w=r/o.width;let $=o.x;for(const j of d){const y=j.area/r*o.width;b.push({index:j.index,x:$,y:o.y,width:y,height:w}),$+=y}o.y+=w,o.height-=w}d=[]};for(const r of v){const p=g(),w=d.map(j=>j.area),$=[...w,r.area];d.length===0||T($,p)<=T(w,p)?d.push({index:r.index,area:r.area}):(n(),d.push({index:r.index,area:r.area}))}n();const c=new Map;return[...v].forEach((r,p)=>c.set(r.index,p)),b.sort((r,p)=>r.index-p.index).map(r=>{const p=u[r.index];return{label:p.label,value:p.value,share:p.value/h,x:r.x,y:r.y,width:r.width,height:r.height,colorVar:K(l.get(p)??r.index),rampVar:tt(c.get(r.index)??0,b.length)}})}function at(t,s){return t.map(e=>({...e,x:s-e.x-e.width}))}function nt({data:t,labels:s,height:e=260,maxTiles:i,otherLabel:m="Other",labelMinWidth:x=48,labelMinHeight:u=26,format:l=U,dir:h,a11yFallback:f,className:v}){return a.jsx(P,{labels:s,height:e,...h!==void 0?{dir:h}:{},...f!==void 0?{a11yFallback:f}:{},...v!==void 0?{className:v}:{},padding:{top:1,right:1,bottom:1,left:1},children:({innerWidth:b,innerHeight:o,rtl:d,mounted:g})=>{if(b<=0||o<=0)return null;const n=et(t,{width:b,height:o,...i!==void 0?{maxTiles:i}:{},otherLabel:m}),c=d?at(n,b):n;return a.jsx("g",{"data-treemap":"",children:c.map((r,p)=>{const w=r.width>=x&&r.height>=u;return a.jsxs("g",{className:"adm-chart-fade",style:{"--adm-fade":g?"1":"0","--adm-stagger":`${p*45}ms`},"data-tile":r.label,children:[a.jsx("rect",{x:r.x,y:r.y,width:Math.max(0,r.width-2),height:Math.max(0,r.height-2),rx:4,fill:r.rampVar,stroke:"var(--border)",strokeWidth:1}),w&&a.jsxs(a.Fragment,{children:[a.jsx("text",{x:r.x+8,y:r.y+16,className:"adm-chart-axis-label",textAnchor:"start",children:r.label}),a.jsx("text",{x:r.x+8,y:r.y+30,className:"adm-chart-axis-label adm-chart-num",textAnchor:"start",children:l(r.value)})]})]},r.label)})})}})}const B=Math.PI*2;function rt(t){return`var(--viz-${t%8+1})`}function st(t){return`color-mix(in srgb, var(--viz-${t%8+1}) 62%, var(--surface))`}function ot(t,s){const{size:e}=s,i=Math.max(0,e/2),m=s.innerRadius??0,x=s.ringThickness??(i-m)/2;if(i<=0)return{arcs:[],total:0};const u=t.map((o,d)=>{const g=o.children.map(c=>({label:c.label,value:Number.isFinite(c.value)?Math.max(0,c.value):0})).filter(c=>c.value>0),n=g.reduce((c,r)=>c+r.value,0);return{label:o.label,index:d,children:g,total:n}}),l=u.reduce((o,d)=>o+d.total,0);if(l<=0)return{arcs:[],total:0};const h=z().innerRadius(m).outerRadius(m+x),f=z().innerRadius(m+x).outerRadius(i),v=[];let b=0;for(const o of u){if(o.total<=0)continue;const d=o.total/l*B,g=b,n=b+d;v.push({label:o.label,value:o.total,share:o.total/l,depth:0,startAngle:g,endAngle:n,path:h({startAngle:g,endAngle:n})??"",colorVar:rt(o.index)});let c=g;for(const r of o.children){const p=r.value/l*B,w=c,$=c+p;c=$,v.push({label:r.label,parentLabel:o.label,value:r.value,share:r.value/l,depth:1,startAngle:w,endAngle:$,path:f({startAngle:w,endAngle:$})??"",colorVar:st(o.index)})}b=n}return{arcs:v,total:l}}function lt({data:t,labels:s,size:e=200,innerRadiusRatio:i=.28,showLegend:m=!0,dir:x,a11yFallback:u,className:l}){const h=L(x),f=k(),v=e/2*i,{arcs:b}=ot(t,{size:e,innerRadius:v}),o=b.filter(d=>d.depth===0);return a.jsxs("div",{className:l===void 0?"adm-donut":`adm-donut ${l}`,...x!==void 0?{dir:h}:{},"data-export-node":"",children:[a.jsxs("svg",{role:"img","aria-label":s.label,width:e,height:e,viewBox:`0 0 ${e} ${e}`,children:[s.description!==void 0&&a.jsx("desc",{children:s.description}),a.jsx("g",{transform:`translate(${e/2}, ${e/2})`,"data-sunburst":"",children:b.map((d,g)=>a.jsx("path",{className:"adm-chart-fade",style:{"--adm-fade":f?"1":"0","--adm-stagger":`${g*55}ms`},d:d.path,fill:d.colorVar,stroke:"var(--surface)",strokeWidth:1,"data-arc":d.label,"data-depth":d.depth},`${d.parentLabel??"root"}-${d.label}-${d.depth}`))})]}),m&&a.jsx("ul",{className:"adm-donut-legend",children:o.map(d=>a.jsxs("li",{className:"adm-donut-legend-row",children:[a.jsx("span",{className:"adm-donut-legend-dot",style:{"--adm-dot":d.colorVar},"aria-hidden":"true"}),a.jsx("span",{children:d.label}),a.jsx("span",{className:"adm-donut-legend-value",children:`${Math.round(d.share*100)}%`})]},d.label))}),u!==void 0&&a.jsx("div",{className:"adm-chart-sr",children:u})]})}function dt(t,s){if(s<=1)return"var(--viz-ramp-6)";const e=6-Math.round(t/(s-1)*4);return`var(--viz-ramp-${Math.min(6,Math.max(2,e))})`}function it(t){const s=t.map(x=>({label:x.label,value:Number.isFinite(x.value)?Math.max(0,x.value):0})),e=s[0]?.value??0;if(s.length===0||e<=0)return{stages:[],overallConversion:0};const i=s.map((x,u)=>{const l=s[u-1]?.value??e,h=x.value/e;return{label:x.label,value:x.value,widthFrac:h,overallPct:h*100,stepPct:l>0?x.value/l*100:0,offsetFrac:(1-h)/2,colorVar:dt(u,s.length)}}),m=s.at(-1)?.value??0;return{stages:i,overallConversion:m/e*100}}function ct({data:t,labels:s,variant:e="stepped",showStepConversion:i=!0,overallFooter:m=!0,height:x=240,format:u=U,dir:l,a11yFallback:h,className:f}){return a.jsx(P,{labels:s,height:x,...l!==void 0?{dir:l}:{},...h!==void 0?{a11yFallback:h}:{},...f!==void 0?{className:f}:{},padding:{top:2,right:2,bottom:m?24:2,left:2},children:({innerWidth:v,innerHeight:b,rtl:o,mounted:d})=>{if(v<=0||b<=0)return null;const{stages:g,overallConversion:n}=it(t);if(g.length===0)return null;const c=b/g.length,r=Math.max(6,c*(i?.54:.72));return a.jsxs("g",{"data-funnel":"",children:[g.map((p,w)=>{const $=p.widthFrac*v,j=e==="stepped"?p.offsetFrac*v:0,y=o?v-j-$:j,M=w*c+(c-r)/2,N=o?v-8:8,A=o?"end":"start";return a.jsxs("g",{className:"adm-chart-fade",style:{"--adm-fade":d?"1":"0","--adm-stagger":`${w*70}ms`},"data-stage":p.label,children:[a.jsx("rect",{x:y,y:M,width:Math.max(0,$),height:r,rx:4,fill:p.colorVar}),a.jsx("text",{className:"adm-chart-axis-label",x:N,y:M+r/2-3,textAnchor:A,dominantBaseline:"middle",children:p.label}),a.jsx("text",{className:"adm-chart-axis-label adm-chart-num",x:N,y:M+r/2+10,textAnchor:A,dominantBaseline:"middle",children:`${u(p.value)} · ${Math.round(p.overallPct)}%`}),i&&w>0&&a.jsx("text",{className:"adm-chart-axis-label",x:v/2,y:w*c,textAnchor:"middle",dominantBaseline:"middle","data-step-conversion":"",children:`${Math.round(p.stepPct)}% continue`})]},p.label)}),m&&a.jsx("text",{className:"adm-chart-tooltip-value",x:v/2,y:b+16,textAnchor:"middle","data-overall-conversion":"",children:`${Math.round(n)}% overall`})]})}})}const O=Math.PI*2;function ut(t){return`var(--viz-${t%8+1})`}function ht(t){return Number.isFinite(t)?Math.min(1,Math.max(0,t/100)):0}function mt(t,s){const{size:e,thickness:i=12,gap:m=6}=s;if(e<=0||t.length===0)return[];const x=e/2;return t.map((u,l)=>{const h=x-l*(i+m)-i/2,f=Math.max(0,h),v=Math.max(0,f-i/2),b=f+i/2,o=ht(u.value),d=z().innerRadius(v).outerRadius(b).cornerRadius(i/2),g=d({startAngle:0,endAngle:O})??"",n=o>0?d({startAngle:0,endAngle:o*O})??"":"";return{label:u.label,value:u.value,fraction:o,radius:f,trackPath:g,valuePath:n,colorVar:ut(l)}})}const xt=t=>`${Math.round(t)}%`;function pt({data:t,labels:s,size:e=168,thickness:i=12,showLegend:m=!0,format:x=xt,dir:u,a11yFallback:l,className:h}){const f=L(u),v=k(),b=mt(t,{size:e,thickness:i});return a.jsxs("div",{className:h===void 0?"adm-donut":`adm-donut ${h}`,...u!==void 0?{dir:f}:{},"data-export-node":"",children:[a.jsxs("svg",{role:"img","aria-label":s.label,width:e,height:e,viewBox:`0 0 ${e} ${e}`,children:[s.description!==void 0&&a.jsx("desc",{children:s.description}),a.jsx("g",{transform:`translate(${e/2}, ${e/2})`,children:b.map((o,d)=>a.jsxs("g",{"data-ring":o.label,children:[a.jsx("path",{d:o.trackPath,fill:"var(--border)",opacity:.4}),o.valuePath!==""&&a.jsx("path",{className:"adm-chart-fade",style:{"--adm-fade":v?"1":"0","--adm-stagger":`${d*90}ms`},d:o.valuePath,fill:o.colorVar,"data-value":""})]},o.label))})]}),m&&a.jsx("ul",{className:"adm-donut-legend",children:b.map(o=>a.jsxs("li",{className:"adm-donut-legend-row",children:[a.jsx("span",{className:"adm-donut-legend-dot",style:{"--adm-dot":o.colorVar},"aria-hidden":"true"}),a.jsx("span",{children:o.label}),a.jsx("span",{className:"adm-donut-legend-value",children:x(o.value)})]},o.label))}),l!==void 0&&a.jsx("div",{className:"adm-chart-sr",children:l})]})}function ft(t){return`var(--viz-${t%8+1})`}function gt(t,s,e){const i=Math.PI*2/s;return-Math.PI/2+(e?-1:1)*t*i}function W(t){return t.length===0?"":`${t.map((s,e)=>`${e===0?"M":"L"}${s.x.toFixed(3)},${s.y.toFixed(3)}`).join("")}Z`}function vt(t,s,e){const{size:i,levels:m=4,rtl:x=!1}=e,u=t.length,l=Math.max(0,i/2),h={x:l,y:l};if(u<3||l<=0)return{axes:[],series:[],rings:[],radius:l,center:h,max:1};const f=e.max??Math.max(1,...s.flatMap(g=>g.values.map(n=>Number.isFinite(n)?n:0))),v=Array.from({length:u},(g,n)=>gt(n,u,x)),b=t.map((g,n)=>{const c=v[n];return{label:g,angle:c,point:{x:h.x+Math.cos(c)*l,y:h.y+Math.sin(c)*l}}}),o=Array.from({length:m},(g,n)=>{const c=(n+1)/m,r=v.map(p=>({x:h.x+Math.cos(p)*l*c,y:h.y+Math.sin(p)*l*c}));return{level:c,points:r,path:W(r)}}),d=s.map((g,n)=>{const c=v.map((r,p)=>{const w=g.values[p],$=Number.isFinite(w)?Math.max(0,w):0,j=Math.min(1,$/f);return{x:h.x+Math.cos(r)*l*j,y:h.y+Math.sin(r)*l*j}});return{label:g.label,points:c,path:W(c),colorVar:ft(n)}});return{axes:b,series:d,rings:o,radius:l,center:h,max:f}}const I=30;function bt({axes:t,series:s,labels:e,size:i=200,levels:m=4,max:x,showLegend:u=!0,dir:l,a11yFallback:h,className:f}){const v=L(l),b=k(),d=vt(t,s,{size:i,levels:m,rtl:v==="rtl",...x!==void 0?{max:x}:{}}),g=i+I*2;return a.jsxs("div",{className:f===void 0?"adm-donut":`adm-donut ${f}`,...l!==void 0?{dir:v}:{},"data-export-node":"",children:[a.jsxs("svg",{role:"img","aria-label":e.label,width:g,height:g,viewBox:`0 0 ${g} ${g}`,children:[e.description!==void 0&&a.jsx("desc",{children:e.description}),a.jsxs("g",{transform:`translate(${I}, ${I})`,"data-radar":"",children:[d.rings.map(n=>a.jsx("path",{d:n.path,fill:"none",stroke:"var(--border)",strokeWidth:1},n.level)),d.axes.map(n=>a.jsx("line",{x1:d.center.x,y1:d.center.y,x2:n.point.x,y2:n.point.y,stroke:"var(--border)",strokeWidth:1},n.label)),d.series.map((n,c)=>a.jsx("path",{className:"adm-chart-fade",style:{"--adm-fade":b?"1":"0","--adm-stagger":`${c*120}ms`},d:n.path,fill:n.colorVar,fillOpacity:c===0?.28:.12,stroke:n.colorVar,strokeWidth:2,"data-series":n.label},n.label)),d.axes.map(n=>{const c=Math.abs(n.point.x-d.center.x)<1?"middle":n.point.x>d.center.x?"start":"end",r=c==="middle"?0:n.point.x>d.center.x?6:-6,p=n.point.y>d.center.y?12:n.point.y<d.center.y?-6:4;return a.jsx("text",{className:"adm-chart-axis-label",x:n.point.x+r,y:n.point.y+p,textAnchor:c,"data-axis-label":n.label,children:n.label},`label-${n.label}`)})]})]}),u&&d.series.length>0&&a.jsx("ul",{className:"adm-donut-legend",children:d.series.map(n=>a.jsxs("li",{className:"adm-donut-legend-row",children:[a.jsx("span",{className:"adm-donut-legend-dot",style:{"--adm-dot":n.colorVar},"aria-hidden":"true"}),a.jsx("span",{children:n.label})]},n.label))}),h!==void 0&&a.jsx("div",{className:"adm-chart-sr",children:h})]})}const S=Math.PI*2;function jt(t){return`var(--viz-${t%8+1})`}function E(t,s,e,i){return{x:t+Math.sin(i)*e,y:s-Math.cos(i)*e}}function wt(t,s,e){const{size:i,thickness:m=12,padAngle:x=.04,rtl:u=!1}=e,l=t.length,h=Math.max(0,i/2),f={x:h,y:h};if(l<2||h<=0)return{arcs:[],ribbons:[],radius:h,center:f};const v=h-m,b=t.map((y,M)=>{let N=0;for(let A=0;A<l;A+=1){if(M===A)continue;const F=s[M]?.[A];Number.isFinite(F)&&F>0&&(N+=F)}return N}),o=b.reduce((y,M)=>y+M,0),d=x*l,g=Math.max(0,S-d),n=y=>o>0?y/o*g:g/l,c=z().innerRadius(v).outerRadius(h),r=[];let p=0;const w=u?-1:1;for(let y=0;y<l;y+=1){const M=n(b[y]),N=p+x/2,A=N+M;p=A+x/2;const F=t[y],V=w===1?N:S-A,R=w===1?A:S-N;r.push({id:F.id,label:F.label,startAngle:V,endAngle:R,midAngle:(V+R)/2,total:b[y],path:c({startAngle:V,endAngle:R})??"",colorVar:jt(y)})}const $=new Map(r.map(y=>[y.id,y])),j=[];for(let y=0;y<l;y+=1)for(let M=y+1;M<l;M+=1){const N=s[y]?.[M];if(!Number.isFinite(N)||N<=0)continue;const A=r[y],F=r[M],V=E(f.x,f.y,v,A.midAngle),R=E(f.x,f.y,v,F.midAngle),X=`M${V.x.toFixed(3)},${V.y.toFixed(3)}Q${f.x.toFixed(3)},${f.y.toFixed(3)} ${R.x.toFixed(3)},${R.y.toFixed(3)}`;j.push({from:t[y].id,to:t[M].id,weight:N,path:X,colorVar:$.get(A.id).colorVar})}return{arcs:r,ribbons:j,radius:h,center:f}}function yt(t,s){const e=new Map(t.map((m,x)=>[m,x])),i=t.map(()=>t.map(()=>0));for(const m of s){const x=e.get(m.from),u=e.get(m.to);if(x===void 0||u===void 0||x===u)continue;const l=i[x],h=i[u];if(l===void 0||h===void 0)continue;const f=Number.isFinite(m.weight)?Math.max(0,m.weight):0;l[u]=(l[u]??0)+f,h[x]=(h[x]??0)+f}return i}function $t({nodes:t,links:s,labels:e,size:i=220,thickness:m=12,showLegend:x=!0,dir:u,a11yFallback:l,className:h}){const f=L(u),v=k(),b=f==="rtl",o=yt(t.map(n=>n.id),s),d=wt(t,o,{size:i,thickness:m,rtl:b}),g=d.ribbons.reduce((n,c)=>Math.max(n,c.weight),0);return a.jsxs("div",{className:h===void 0?"adm-donut":`adm-donut ${h}`,...u!==void 0?{dir:f}:{},"data-export-node":"",children:[a.jsxs("svg",{role:"img","aria-label":e.label,width:i,height:i,viewBox:`0 0 ${i} ${i}`,children:[e.description!==void 0&&a.jsx("desc",{children:e.description}),a.jsxs("g",{"data-chord":"",children:[d.ribbons.map((n,c)=>a.jsx("path",{className:"adm-chart-fade",style:{"--adm-fade":v?"1":"0","--adm-stagger":`${c*60}ms`},d:n.path,fill:"none",stroke:n.colorVar,strokeWidth:g>0?1.5+n.weight/g*5:2,strokeOpacity:.45,strokeLinecap:"round","data-ribbon":`${n.from}-${n.to}`},`${n.from}-${n.to}`)),d.arcs.map(n=>a.jsx("path",{d:n.path,fill:n.colorVar,"data-node":n.id,transform:`translate(${d.center.x}, ${d.center.y})`},n.id))]})]}),x&&a.jsx("ul",{className:"adm-donut-legend",children:d.arcs.map(n=>a.jsxs("li",{className:"adm-donut-legend-row",children:[a.jsx("span",{className:"adm-donut-legend-dot",style:{"--adm-dot":n.colorVar},"aria-hidden":"true"}),a.jsx("span",{children:n.label}),a.jsx("span",{className:"adm-donut-legend-value",children:Math.round(n.total)})]},n.id))}),l!==void 0&&a.jsx("div",{className:"adm-chart-sr",children:l})]})}function Mt(t){return`var(--viz-${t%8+1})`}function Nt(t,s){return t.length*s*.58+s*.5}function At(t,s){const{width:e,maxTerms:i=1/0,minFontSize:m=13,maxFontSize:x=40,gapX:u=14,lineGap:l=10,rtl:h=!1}=s,f=t.filter(j=>Number.isFinite(j.weight)&&j.weight>0).slice(0,Number.isFinite(i)?i:void 0);if(e<=0||f.length===0)return{tokens:[],width:Math.max(0,e),height:0};const v=f.map(j=>j.weight),b=Math.min(...v),o=Math.max(...v),d=j=>o===b?x:Math.round(m+(j-b)/(o-b)*(x-m)),g=[];let n=[],c=0,r=0,p=0;const w=()=>{if(n.length===0)return;const j=r+l;for(const y of n)y.y=p+j/2;g.push(n),p+=j,n=[],c=0,r=0};f.forEach((j,y)=>{const M=d(j.weight),N=Nt(j.term,M);n.length>0&&c+u+N>e&&w();const A={term:j.term,weight:j.weight,fontSize:M,x:c,y:0,width:N,colorVar:Mt(y)};n.push(A),c+=N+u,r=Math.max(r,M)}),w();const $=g.flat();if(h)for(const j of $)j.x=e-j.x-j.width;return{tokens:$,width:e,height:p}}function Ft({data:t,labels:s,height:e=200,maxTerms:i,minFontSize:m,maxFontSize:x,dir:u,a11yFallback:l,className:h}){return a.jsx(P,{labels:s,height:e,...u!==void 0?{dir:u}:{},...l!==void 0?{a11yFallback:l}:{},...h!==void 0?{className:h}:{},padding:{top:6,right:6,bottom:6,left:6},children:({innerWidth:f,innerHeight:v,rtl:b,mounted:o})=>{if(f<=0)return null;const{tokens:d,height:g}=At(t,{width:f,rtl:b,...i!==void 0?{maxTerms:i}:{},...m!==void 0?{minFontSize:m}:{},...x!==void 0?{maxFontSize:x}:{}}),n=Math.max(0,(v-g)/2);return a.jsx("g",{"data-wordcloud":"",transform:`translate(0, ${n})`,children:d.map((c,r)=>a.jsx("text",{x:c.x,y:c.y,fontSize:c.fontSize,fontWeight:700,fill:c.colorVar,textAnchor:"start",dominantBaseline:"middle",className:"adm-chart-fade",style:{"--adm-fade":o?"1":"0","--adm-stagger":`${r*40}ms`},"data-term":c.term,children:c.term},`${c.term}-${r}`))})}})}function C(){return a.jsx("p",{className:"px-4 pb-4 text-body-sm text-fg-muted",children:"Unexpected data shape."})}function zt({config:t,data:s}){const e=_(s);if(e===null)return a.jsx(C,{});const i=D(t);return a.jsx("div",{className:"px-4 pb-4 compact:px-3 compact:pb-3","data-widget":"chart-treemap",children:a.jsx(nt,{data:e,labels:{label:t.title??"Treemap"},maxTiles:t.maxTiles,height:t.height,format:m=>H(m,t.metricFormat,i)})})}function Lt({config:t,data:s}){const e=G(s);return e===null?a.jsx(C,{}):a.jsx("div",{className:"flex justify-center px-4 pb-4 compact:px-3 compact:pb-3","data-widget":"chart-sunburst",children:a.jsx(lt,{data:e,labels:{label:t.title??"Sunburst"},size:t.size,showLegend:t.showLegend})})}function kt({config:t,data:s}){const e=q(s);if(e===null)return a.jsx(C,{});const i=D(t);return a.jsx("div",{className:"px-4 pb-4 compact:px-3 compact:pb-3","data-widget":"chart-funnel",children:a.jsx(ct,{data:e,labels:{label:t.title??"Funnel"},variant:t.variant,showStepConversion:t.showStepConversion,overallFooter:t.overallFooter,height:t.height,format:m=>H(m,t.metricFormat,i)})})}function It({config:t,data:s}){const e=J(s,t.maxRings);return e===null?a.jsx(C,{}):a.jsx("div",{className:"flex justify-center px-4 pb-4 compact:px-3 compact:pb-3","data-widget":"chart-radial-bar",children:a.jsx(pt,{data:e,labels:{label:t.title??"Radial bar"},size:t.size,showLegend:t.showLegend})})}function St({config:t,data:s}){const e=Q(s);return e===null||e.axes.length===0?a.jsx(C,{}):a.jsx("div",{className:"flex justify-center px-4 pb-4 compact:px-3 compact:pb-3","data-widget":"chart-radar",children:a.jsx(bt,{axes:e.axes,series:e.series,labels:{label:t.title??"Radar"},size:t.size,levels:t.levels,showLegend:t.showLegend})})}function Pt({config:t,data:s}){const e=Y(s,t.nodeLimit);return e===null?a.jsx(C,{}):a.jsx("div",{className:"flex justify-center px-4 pb-4 compact:px-3 compact:pb-3","data-widget":"chart-chord",children:a.jsx($t,{nodes:e.nodes,links:e.links,labels:{label:t.title??"Chord"},size:t.size,showLegend:t.showLegend})})}function Tt({config:t,data:s}){const e=Z(s,t.maxTerms);return e===null?a.jsx(C,{}):a.jsx("div",{className:"px-4 pb-4 compact:px-3 compact:pb-3","data-widget":"chart-wordcloud",children:a.jsx(Ft,{data:e,labels:{label:t.title??"Word cloud"},height:t.height,maxTerms:t.maxTerms,minFontSize:t.minFontSize,maxFontSize:t.maxFontSize})})}export{Pt as ChartChordWidget,kt as ChartFunnelWidget,St as ChartRadarWidget,It as ChartRadialBarWidget,Lt as ChartSunburstWidget,zt as ChartTreemapWidget,Tt as ChartWordcloudWidget};
2
+ //# sourceMappingURL=PartWholeWidgets-BDn0i0jt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PartWholeWidgets-BDn0i0jt.js","sources":["../../../../packages/charts/dist/geometry/treemap.js","../../../../packages/charts/dist/components/Treemap.js","../../../../packages/charts/dist/geometry/sunburst.js","../../../../packages/charts/dist/components/Sunburst.js","../../../../packages/charts/dist/geometry/funnel.js","../../../../packages/charts/dist/components/Funnel.js","../../../../packages/charts/dist/geometry/radialBar.js","../../../../packages/charts/dist/components/RadialBar.js","../../../../packages/charts/dist/geometry/radar.js","../../../../packages/charts/dist/components/Radar.js","../../../../packages/charts/dist/geometry/chord.js","../../../../packages/charts/dist/components/Chord.js","../../../../packages/charts/dist/geometry/wordcloud.js","../../../../packages/charts/dist/components/WordCloud.js","../../../../packages/widgets/dist/families/charts/PartWholeWidgets.js"],"sourcesContent":["/**\n * Pure treemap geometry (`chart-treemap`, research/widget-registry.md §2):\n * squarified slice-and-dice layout (Bruls/Huizing/van Wijk) over a flat,\n * value-weighted category list. DOM-free and deterministic so scheduled-report\n * workers rasterize the identical layout the browser renders (04 §7.1).\n *\n * RTL: the caller mirrors the x axis (`mirrorTiles`) — the layout math itself\n * stays orientation-neutral (categorical part-to-whole mirrors per §7.4).\n */\nfunction vizColor(index) {\n return `var(--viz-${(index % 8) + 1})`;\n}\n/** Ramp step 1..6 by descending rank (largest tile = strongest). */\nfunction rampColor(rank, count) {\n if (count <= 1)\n return 'var(--viz-ramp-6)';\n const step = 6 - Math.round((rank / (count - 1)) * 5); // rank 0 → 6, last → 1\n return `var(--viz-ramp-${Math.min(6, Math.max(1, step))})`;\n}\nfunction worstRatio(row, length) {\n if (length <= 0 || row.length === 0)\n return Infinity;\n let min = Infinity;\n let max = -Infinity;\n let sum = 0;\n for (const area of row) {\n if (area < min)\n min = area;\n if (area > max)\n max = area;\n sum += area;\n }\n const side2 = length * length;\n const sum2 = sum * sum;\n return Math.max((side2 * max) / sum2, sum2 / (side2 * min));\n}\n/**\n * Squarified treemap tiles in input order (color cycles by order; area alpha\n * ramps by value rank). Non-positive and non-finite values are dropped.\n */\nexport function treemapTiles(input, options) {\n const { width, height, maxTiles = Infinity, otherLabel = 'Other' } = options;\n if (width <= 0 || height <= 0)\n return [];\n // Fold overflow into an \"other\" tile, preserving input order/color indices.\n let items = input.filter((d) => Number.isFinite(d.value) && d.value > 0);\n const colorIndex = new Map();\n items.forEach((item, i) => colorIndex.set(item, i));\n if (Number.isFinite(maxTiles) && items.length > maxTiles) {\n const kept = items.slice(0, maxTiles);\n const rest = items.slice(maxTiles).reduce((sum, d) => sum + d.value, 0);\n const other = { label: otherLabel, value: rest };\n colorIndex.set(other, maxTiles);\n items = [...kept, other];\n }\n const total = items.reduce((sum, d) => sum + d.value, 0);\n if (total <= 0)\n return [];\n const area = width * height;\n // Descending scaled areas drive squarify; original index rides along for order.\n const scaled = items\n .map((item, index) => ({ item, index, area: (item.value / total) * area }))\n .sort((a, b) => b.area - a.area || a.index - b.index);\n const placed = [];\n const cursor = { x: 0, y: 0, width, height };\n let row = [];\n const shortSide = () => Math.min(cursor.width, cursor.height);\n const layoutRow = () => {\n if (row.length === 0)\n return;\n const rowArea = row.reduce((sum, r) => sum + r.area, 0);\n const horizontal = cursor.width >= cursor.height;\n if (horizontal) {\n const rowWidth = rowArea / cursor.height;\n let offset = cursor.y;\n for (const cell of row) {\n const cellHeight = (cell.area / rowArea) * cursor.height;\n placed.push({ index: cell.index, x: cursor.x, y: offset, width: rowWidth, height: cellHeight });\n offset += cellHeight;\n }\n cursor.x += rowWidth;\n cursor.width -= rowWidth;\n }\n else {\n const rowHeight = rowArea / cursor.width;\n let offset = cursor.x;\n for (const cell of row) {\n const cellWidth = (cell.area / rowArea) * cursor.width;\n placed.push({ index: cell.index, x: offset, y: cursor.y, width: cellWidth, height: rowHeight });\n offset += cellWidth;\n }\n cursor.y += rowHeight;\n cursor.height -= rowHeight;\n }\n row = [];\n };\n for (const cell of scaled) {\n const length = shortSide();\n const current = row.map((r) => r.area);\n const withCell = [...current, cell.area];\n if (row.length === 0 || worstRatio(withCell, length) <= worstRatio(current, length)) {\n row.push({ index: cell.index, area: cell.area });\n }\n else {\n layoutRow();\n row.push({ index: cell.index, area: cell.area });\n }\n }\n layoutRow();\n // Rank by value (descending) for the alpha ramp.\n const rankByIndex = new Map();\n [...scaled].forEach((cell, rank) => rankByIndex.set(cell.index, rank));\n return placed\n .sort((a, b) => a.index - b.index)\n .map((p) => {\n const source = items[p.index];\n return {\n label: source.label,\n value: source.value,\n share: source.value / total,\n x: p.x,\n y: p.y,\n width: p.width,\n height: p.height,\n colorVar: vizColor(colorIndex.get(source) ?? p.index),\n rampVar: rampColor(rankByIndex.get(p.index) ?? 0, placed.length),\n };\n });\n}\n/** Mirror tiles across the vertical axis for RTL rendering. */\nexport function mirrorTiles(tiles, width) {\n return tiles.map((tile) => ({ ...tile, x: width - tile.x - tile.width }));\n}\n//# sourceMappingURL=treemap.js.map","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { mirrorTiles, treemapTiles } from '../geometry/treemap.js';\nimport { formatCompact } from '../utils/format.js';\nimport { ChartSurface } from './ChartSurface.js';\nexport function Treemap({ data, labels, height = 260, maxTiles, otherLabel = 'Other', labelMinWidth = 48, labelMinHeight = 26, format = formatCompact, dir, a11yFallback, className, }) {\n return (_jsx(ChartSurface, { labels: labels, height: height, ...(dir !== undefined ? { dir } : {}), ...(a11yFallback !== undefined ? { a11yFallback } : {}), ...(className !== undefined ? { className } : {}), padding: { top: 1, right: 1, bottom: 1, left: 1 }, children: ({ innerWidth, innerHeight, rtl, mounted }) => {\n if (innerWidth <= 0 || innerHeight <= 0)\n return null;\n const laidOut = treemapTiles(data, {\n width: innerWidth,\n height: innerHeight,\n ...(maxTiles !== undefined ? { maxTiles } : {}),\n otherLabel,\n });\n const tiles = rtl ? mirrorTiles(laidOut, innerWidth) : laidOut;\n return (_jsx(\"g\", { \"data-treemap\": \"\", children: tiles.map((tile, i) => {\n const showLabel = tile.width >= labelMinWidth && tile.height >= labelMinHeight;\n return (_jsxs(\"g\", { className: \"adm-chart-fade\", style: { '--adm-fade': mounted ? '1' : '0', '--adm-stagger': `${i * 45}ms` }, \"data-tile\": tile.label, children: [_jsx(\"rect\", { x: tile.x, y: tile.y, width: Math.max(0, tile.width - 2), height: Math.max(0, tile.height - 2), rx: 4, fill: tile.rampVar, stroke: \"var(--border)\", strokeWidth: 1 }), showLabel && (_jsxs(_Fragment, { children: [_jsx(\"text\", { x: tile.x + 8, y: tile.y + 16, className: \"adm-chart-axis-label\", textAnchor: \"start\", children: tile.label }), _jsx(\"text\", { x: tile.x + 8, y: tile.y + 30, className: \"adm-chart-axis-label adm-chart-num\", textAnchor: \"start\", children: format(tile.value) })] }))] }, tile.label));\n }) }));\n } }));\n}\n//# sourceMappingURL=Treemap.js.map","/**\n * Pure sunburst geometry (`chart-sunburst`, research/widget-registry.md §2): two\n * nested rings from a 2-level hierarchy — inner ring = parents (angle ∝ subtree\n * total), outer ring = children (angle ∝ child value within the parent span).\n * Arcs sweep clockwise from 12 o'clock and do NOT mirror in RTL (rotation is\n * direction-neutral, §7.4). DOM-free + deterministic (04 §7.1).\n */\nimport { arc } from 'd3-shape';\nconst TAU = Math.PI * 2;\nfunction vizColor(index) {\n return `var(--viz-${(index % 8) + 1})`;\n}\n/** Blend a parent color toward the surface for its children (lighter band). */\nfunction childColor(index) {\n return `color-mix(in srgb, var(--viz-${(index % 8) + 1}) 62%, var(--surface))`;\n}\n/**\n * Two-ring sunburst arcs (parents then their children, in input order). Empty\n * parents (no positive children) are skipped; a non-positive total yields [].\n */\nexport function sunburstArcs(parents, options) {\n const { size } = options;\n const outer = Math.max(0, size / 2);\n const innerHole = options.innerRadius ?? 0;\n const band = options.ringThickness ?? (outer - innerHole) / 2;\n if (outer <= 0)\n return { arcs: [], total: 0 };\n const normalized = parents.map((p, i) => {\n const children = p.children\n .map((c) => ({ label: c.label, value: Number.isFinite(c.value) ? Math.max(0, c.value) : 0 }))\n .filter((c) => c.value > 0);\n const total = children.reduce((s, c) => s + c.value, 0);\n return { label: p.label, index: i, children, total };\n });\n const grandTotal = normalized.reduce((s, p) => s + p.total, 0);\n if (grandTotal <= 0)\n return { arcs: [], total: 0 };\n const innerArc = arc()\n .innerRadius(innerHole)\n .outerRadius(innerHole + band);\n const outerArc = arc()\n .innerRadius(innerHole + band)\n .outerRadius(outer);\n const arcs = [];\n let angle = 0;\n for (const parent of normalized) {\n if (parent.total <= 0)\n continue;\n const parentSpan = (parent.total / grandTotal) * TAU;\n const parentStart = angle;\n const parentEnd = angle + parentSpan;\n arcs.push({\n label: parent.label,\n value: parent.total,\n share: parent.total / grandTotal,\n depth: 0,\n startAngle: parentStart,\n endAngle: parentEnd,\n path: innerArc({ startAngle: parentStart, endAngle: parentEnd }) ?? '',\n colorVar: vizColor(parent.index),\n });\n let childAngle = parentStart;\n for (const child of parent.children) {\n const childSpan = (child.value / grandTotal) * TAU;\n const cStart = childAngle;\n const cEnd = childAngle + childSpan;\n childAngle = cEnd;\n arcs.push({\n label: child.label,\n parentLabel: parent.label,\n value: child.value,\n share: child.value / grandTotal,\n depth: 1,\n startAngle: cStart,\n endAngle: cEnd,\n path: outerArc({ startAngle: cStart, endAngle: cEnd }) ?? '',\n colorVar: childColor(parent.index),\n });\n }\n angle = parentEnd;\n }\n return { arcs, total: grandTotal };\n}\n//# sourceMappingURL=sunburst.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { sunburstArcs } from '../geometry/sunburst.js';\nimport { useChartDir } from '../hooks/useRtl.js';\nimport { useMountAnimation } from '../hooks/useMountAnimation.js';\nexport function Sunburst({ data, labels, size = 200, innerRadiusRatio = 0.28, showLegend = true, dir, a11yFallback, className, }) {\n const resolvedDir = useChartDir(dir);\n const mounted = useMountAnimation();\n const innerRadius = (size / 2) * innerRadiusRatio;\n const { arcs } = sunburstArcs(data, { size, innerRadius });\n const parents = arcs.filter((a) => a.depth === 0);\n return (_jsxs(\"div\", { className: className === undefined ? 'adm-donut' : `adm-donut ${className}`, ...(dir !== undefined ? { dir: resolvedDir } : {}), \"data-export-node\": \"\", children: [_jsxs(\"svg\", { role: \"img\", \"aria-label\": labels.label, width: size, height: size, viewBox: `0 0 ${size} ${size}`, children: [labels.description !== undefined && _jsx(\"desc\", { children: labels.description }), _jsx(\"g\", { transform: `translate(${size / 2}, ${size / 2})`, \"data-sunburst\": \"\", children: arcs.map((arc, i) => (_jsx(\"path\", { className: \"adm-chart-fade\", style: { '--adm-fade': mounted ? '1' : '0', '--adm-stagger': `${i * 55}ms` }, d: arc.path, fill: arc.colorVar, stroke: \"var(--surface)\", strokeWidth: 1, \"data-arc\": arc.label, \"data-depth\": arc.depth }, `${arc.parentLabel ?? 'root'}-${arc.label}-${arc.depth}`))) })] }), showLegend && (_jsx(\"ul\", { className: \"adm-donut-legend\", children: parents.map((arc) => (_jsxs(\"li\", { className: \"adm-donut-legend-row\", children: [_jsx(\"span\", { className: \"adm-donut-legend-dot\", style: { '--adm-dot': arc.colorVar }, \"aria-hidden\": \"true\" }), _jsx(\"span\", { children: arc.label }), _jsx(\"span\", { className: \"adm-donut-legend-value\", children: `${Math.round(arc.share * 100)}%` })] }, arc.label))) })), a11yFallback !== undefined && _jsx(\"div\", { className: \"adm-chart-sr\", children: a11yFallback })] }));\n}\n//# sourceMappingURL=Sunburst.js.map","/**\n * Pure funnel geometry (`chart-funnel`, research/widget-registry.md §2):\n * ordered shrinking stages with two layouts —\n * - `horizontal`: left-aligned bars, width = value / firstValue;\n * - `stepped`: centered bars with \"N% continue\" step-conversion rows.\n * Percentages are of the first stage (overall) and of the previous stage\n * (per-step). DOM-free + deterministic (04 §7.1).\n */\nfunction vizAlphaVar(index, count) {\n // Fade the accent alpha ramp down the funnel (annex \"fading accent alpha\").\n if (count <= 1)\n return 'var(--viz-ramp-6)';\n const step = 6 - Math.round((index / (count - 1)) * 4); // 6 → 2 across stages\n return `var(--viz-ramp-${Math.min(6, Math.max(2, step))})`;\n}\n/**\n * Funnel stages in input order. Non-finite values clamp to 0; the first\n * positive value is the 100% reference. Returns [] when there is no positive\n * head stage.\n */\nexport function funnelLayout(input) {\n const stages = input.map((s) => ({ label: s.label, value: Number.isFinite(s.value) ? Math.max(0, s.value) : 0 }));\n const head = stages[0]?.value ?? 0;\n if (stages.length === 0 || head <= 0)\n return { stages: [], overallConversion: 0 };\n const out = stages.map((stage, i) => {\n const prev = stages[i - 1]?.value ?? head;\n const widthFrac = stage.value / head;\n return {\n label: stage.label,\n value: stage.value,\n widthFrac,\n overallPct: widthFrac * 100,\n stepPct: prev > 0 ? (stage.value / prev) * 100 : 0,\n offsetFrac: (1 - widthFrac) / 2,\n colorVar: vizAlphaVar(i, stages.length),\n };\n });\n const tail = stages.at(-1)?.value ?? 0;\n return { stages: out, overallConversion: (tail / head) * 100 };\n}\n//# sourceMappingURL=funnel.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { funnelLayout } from '../geometry/funnel.js';\nimport { formatCompact } from '../utils/format.js';\nimport { ChartSurface } from './ChartSurface.js';\nexport function Funnel({ data, labels, variant = 'stepped', showStepConversion = true, overallFooter = true, height = 240, format = formatCompact, dir, a11yFallback, className, }) {\n return (_jsx(ChartSurface, { labels: labels, height: height, ...(dir !== undefined ? { dir } : {}), ...(a11yFallback !== undefined ? { a11yFallback } : {}), ...(className !== undefined ? { className } : {}), padding: { top: 2, right: 2, bottom: overallFooter ? 24 : 2, left: 2 }, children: ({ innerWidth, innerHeight, rtl, mounted }) => {\n if (innerWidth <= 0 || innerHeight <= 0)\n return null;\n const { stages, overallConversion } = funnelLayout(data);\n if (stages.length === 0)\n return null;\n const rowHeight = innerHeight / stages.length;\n const barHeight = Math.max(6, rowHeight * (showStepConversion ? 0.54 : 0.72));\n return (_jsxs(\"g\", { \"data-funnel\": \"\", children: [stages.map((stage, i) => {\n const barWidth = stage.widthFrac * innerWidth;\n const startX = variant === 'stepped' ? stage.offsetFrac * innerWidth : 0;\n const x = rtl ? innerWidth - startX - barWidth : startX;\n const y = i * rowHeight + (rowHeight - barHeight) / 2;\n const textX = rtl ? innerWidth - 8 : 8;\n const anchor = rtl ? 'end' : 'start';\n return (_jsxs(\"g\", { className: \"adm-chart-fade\", style: { '--adm-fade': mounted ? '1' : '0', '--adm-stagger': `${i * 70}ms` }, \"data-stage\": stage.label, children: [_jsx(\"rect\", { x: x, y: y, width: Math.max(0, barWidth), height: barHeight, rx: 4, fill: stage.colorVar }), _jsx(\"text\", { className: \"adm-chart-axis-label\", x: textX, y: y + barHeight / 2 - 3, textAnchor: anchor, dominantBaseline: \"middle\", children: stage.label }), _jsx(\"text\", { className: \"adm-chart-axis-label adm-chart-num\", x: textX, y: y + barHeight / 2 + 10, textAnchor: anchor, dominantBaseline: \"middle\", children: `${format(stage.value)} · ${Math.round(stage.overallPct)}%` }), showStepConversion && i > 0 && (_jsx(\"text\", { className: \"adm-chart-axis-label\", x: innerWidth / 2, y: i * rowHeight, textAnchor: \"middle\", dominantBaseline: \"middle\", \"data-step-conversion\": \"\", children: `${Math.round(stage.stepPct)}% continue` }))] }, stage.label));\n }), overallFooter && (_jsx(\"text\", { className: \"adm-chart-tooltip-value\", x: innerWidth / 2, y: innerHeight + 16, textAnchor: \"middle\", \"data-overall-conversion\": \"\", children: `${Math.round(overallConversion)}% overall` }))] }));\n } }));\n}\n//# sourceMappingURL=Funnel.js.map","/**\n * Pure radial-bar geometry (`chart-radial-bar`, research/widget-registry.md §2):\n * concentric progress rings, one per category (≤4), each a stroke-dashoffset\n * sweep of its percent from 12 o'clock clockwise. DOM-free + deterministic so\n * the same arc paths render in Node and the browser (04 §7.1).\n *\n * Rings never mirror in RTL (clockwise rotation is direction-neutral, like the\n * donut §7.4) — only the surrounding legend flips, which is plain flex CSS.\n */\nimport { arc } from 'd3-shape';\nconst TAU = Math.PI * 2;\nfunction vizColor(index) {\n return `var(--viz-${(index % 8) + 1})`;\n}\nfunction clampFraction(value) {\n if (!Number.isFinite(value))\n return 0;\n return Math.min(1, Math.max(0, value / 100));\n}\n/**\n * Concentric rings from the outside in, in input order. An empty input (or\n * non-positive size) yields []. Each ring's value arc sweeps clockwise from the\n * top; a zero-percent ring has an empty value path.\n */\nexport function radialBarRings(input, options) {\n const { size, thickness = 12, gap = 6 } = options;\n if (size <= 0 || input.length === 0)\n return [];\n const outer = size / 2;\n return input.map((item, index) => {\n const radius = outer - index * (thickness + gap) - thickness / 2;\n const r = Math.max(0, radius);\n const inner = Math.max(0, r - thickness / 2);\n const outerR = r + thickness / 2;\n const fraction = clampFraction(item.value);\n const track = arc()\n .innerRadius(inner)\n .outerRadius(outerR)\n .cornerRadius(thickness / 2);\n const trackPath = track({ startAngle: 0, endAngle: TAU }) ?? '';\n const valuePath = fraction > 0 ? (track({ startAngle: 0, endAngle: fraction * TAU }) ?? '') : '';\n return {\n label: item.label,\n value: item.value,\n fraction,\n radius: r,\n trackPath,\n valuePath,\n colorVar: vizColor(index),\n };\n });\n}\n//# sourceMappingURL=radialBar.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { radialBarRings } from '../geometry/radialBar.js';\nimport { useChartDir } from '../hooks/useRtl.js';\nimport { useMountAnimation } from '../hooks/useMountAnimation.js';\nconst defaultFormat = (value) => `${Math.round(value)}%`;\nexport function RadialBar({ data, labels, size = 168, thickness = 12, showLegend = true, format = defaultFormat, dir, a11yFallback, className, }) {\n const resolvedDir = useChartDir(dir);\n const mounted = useMountAnimation();\n const rings = radialBarRings(data, { size, thickness });\n return (_jsxs(\"div\", { className: className === undefined ? 'adm-donut' : `adm-donut ${className}`, ...(dir !== undefined ? { dir: resolvedDir } : {}), \"data-export-node\": \"\", children: [_jsxs(\"svg\", { role: \"img\", \"aria-label\": labels.label, width: size, height: size, viewBox: `0 0 ${size} ${size}`, children: [labels.description !== undefined && _jsx(\"desc\", { children: labels.description }), _jsx(\"g\", { transform: `translate(${size / 2}, ${size / 2})`, children: rings.map((ring, i) => (_jsxs(\"g\", { \"data-ring\": ring.label, children: [_jsx(\"path\", { d: ring.trackPath, fill: \"var(--border)\", opacity: 0.4 }), ring.valuePath !== '' && (_jsx(\"path\", { className: \"adm-chart-fade\", style: { '--adm-fade': mounted ? '1' : '0', '--adm-stagger': `${i * 90}ms` }, d: ring.valuePath, fill: ring.colorVar, \"data-value\": \"\" }))] }, ring.label))) })] }), showLegend && (_jsx(\"ul\", { className: \"adm-donut-legend\", children: rings.map((ring) => (_jsxs(\"li\", { className: \"adm-donut-legend-row\", children: [_jsx(\"span\", { className: \"adm-donut-legend-dot\", style: { '--adm-dot': ring.colorVar }, \"aria-hidden\": \"true\" }), _jsx(\"span\", { children: ring.label }), _jsx(\"span\", { className: \"adm-donut-legend-value\", children: format(ring.value) })] }, ring.label))) })), a11yFallback !== undefined && _jsx(\"div\", { className: \"adm-chart-sr\", children: a11yFallback })] }));\n}\n//# sourceMappingURL=RadialBar.js.map","/**\n * Pure radar geometry (`chart-radar`, research/widget-registry.md §2): N named\n * axes arranged on a regular polygon, one polygon per series (current vs an\n * optional target overlay), normalized to a shared max. First axis points up\n * (12 o'clock); subsequent axes step clockwise (LTR) or counter-clockwise (RTL)\n * so the categorical axis order mirrors per §7.4. DOM-free + deterministic.\n */\nfunction vizColor(index) {\n return `var(--viz-${(index % 8) + 1})`;\n}\nfunction angleFor(index, count, rtl) {\n // Start at 12 o'clock (-90°); step clockwise (LTR) or CCW (RTL).\n const step = (Math.PI * 2) / count;\n return -Math.PI / 2 + (rtl ? -1 : 1) * index * step;\n}\nfunction polygonPath(points) {\n if (points.length === 0)\n return '';\n return `${points.map((p, i) => `${i === 0 ? 'M' : 'L'}${p.x.toFixed(3)},${p.y.toFixed(3)}`).join('')}Z`;\n}\n/**\n * Radar polygons for 1–2 series over `axisLabels`. Series values are truncated\n * or zero-padded to the axis count. Returns empty axes/series when there are\n * fewer than 3 axes (a polygon needs ≥3 vertices).\n */\nexport function radarLayout(axisLabels, seriesInput, options) {\n const { size, levels = 4, rtl = false } = options;\n const count = axisLabels.length;\n const radius = Math.max(0, size / 2);\n const center = { x: radius, y: radius };\n if (count < 3 || radius <= 0) {\n return { axes: [], series: [], rings: [], radius, center, max: 1 };\n }\n const domainMax = options.max ??\n Math.max(1, ...seriesInput.flatMap((s) => s.values.map((v) => (Number.isFinite(v) ? v : 0))));\n const angles = Array.from({ length: count }, (_, i) => angleFor(i, count, rtl));\n const axes = axisLabels.map((label, i) => {\n const angle = angles[i];\n return {\n label,\n angle,\n point: { x: center.x + Math.cos(angle) * radius, y: center.y + Math.sin(angle) * radius },\n };\n });\n const rings = Array.from({ length: levels }, (_, l) => {\n const level = (l + 1) / levels;\n const points = angles.map((angle) => ({\n x: center.x + Math.cos(angle) * radius * level,\n y: center.y + Math.sin(angle) * radius * level,\n }));\n return { level, points, path: polygonPath(points) };\n });\n const series = seriesInput.map((s, si) => {\n const points = angles.map((angle, i) => {\n const raw = s.values[i];\n const v = Number.isFinite(raw) ? Math.max(0, raw) : 0;\n const norm = Math.min(1, v / domainMax);\n return {\n x: center.x + Math.cos(angle) * radius * norm,\n y: center.y + Math.sin(angle) * radius * norm,\n };\n });\n return { label: s.label, points, path: polygonPath(points), colorVar: vizColor(si) };\n });\n return { axes, series, rings, radius, center, max: domainMax };\n}\n//# sourceMappingURL=radar.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { radarLayout } from '../geometry/radar.js';\nimport { useChartDir } from '../hooks/useRtl.js';\nimport { useMountAnimation } from '../hooks/useMountAnimation.js';\nconst LABEL_PAD = 30;\nexport function Radar({ axes, series, labels, size = 200, levels = 4, max, showLegend = true, dir, a11yFallback, className, }) {\n const resolvedDir = useChartDir(dir);\n const mounted = useMountAnimation();\n const rtl = resolvedDir === 'rtl';\n const layout = radarLayout(axes, series, { size, levels, rtl, ...(max !== undefined ? { max } : {}) });\n const viewSize = size + LABEL_PAD * 2;\n return (_jsxs(\"div\", { className: className === undefined ? 'adm-donut' : `adm-donut ${className}`, ...(dir !== undefined ? { dir: resolvedDir } : {}), \"data-export-node\": \"\", children: [_jsxs(\"svg\", { role: \"img\", \"aria-label\": labels.label, width: viewSize, height: viewSize, viewBox: `0 0 ${viewSize} ${viewSize}`, children: [labels.description !== undefined && _jsx(\"desc\", { children: labels.description }), _jsxs(\"g\", { transform: `translate(${LABEL_PAD}, ${LABEL_PAD})`, \"data-radar\": \"\", children: [layout.rings.map((ring) => (_jsx(\"path\", { d: ring.path, fill: \"none\", stroke: \"var(--border)\", strokeWidth: 1 }, ring.level))), layout.axes.map((axis) => (_jsx(\"line\", { x1: layout.center.x, y1: layout.center.y, x2: axis.point.x, y2: axis.point.y, stroke: \"var(--border)\", strokeWidth: 1 }, axis.label))), layout.series.map((s, i) => (_jsx(\"path\", { className: \"adm-chart-fade\", style: { '--adm-fade': mounted ? '1' : '0', '--adm-stagger': `${i * 120}ms` }, d: s.path, fill: s.colorVar, fillOpacity: i === 0 ? 0.28 : 0.12, stroke: s.colorVar, strokeWidth: 2, \"data-series\": s.label }, s.label))), layout.axes.map((axis) => {\n const anchor = Math.abs(axis.point.x - layout.center.x) < 1 ? 'middle' : axis.point.x > layout.center.x ? 'start' : 'end';\n const dx = anchor === 'middle' ? 0 : axis.point.x > layout.center.x ? 6 : -6;\n const dy = axis.point.y > layout.center.y ? 12 : axis.point.y < layout.center.y ? -6 : 4;\n return (_jsx(\"text\", { className: \"adm-chart-axis-label\", x: axis.point.x + dx, y: axis.point.y + dy, textAnchor: anchor, \"data-axis-label\": axis.label, children: axis.label }, `label-${axis.label}`));\n })] })] }), showLegend && layout.series.length > 0 && (_jsx(\"ul\", { className: \"adm-donut-legend\", children: layout.series.map((s) => (_jsxs(\"li\", { className: \"adm-donut-legend-row\", children: [_jsx(\"span\", { className: \"adm-donut-legend-dot\", style: { '--adm-dot': s.colorVar }, \"aria-hidden\": \"true\" }), _jsx(\"span\", { children: s.label })] }, s.label))) })), a11yFallback !== undefined && _jsx(\"div\", { className: \"adm-chart-sr\", children: a11yFallback })] }));\n}\n//# sourceMappingURL=Radar.js.map","/**\n * Pure chord geometry (`chart-chord`, research/widget-registry.md §2): nodes on\n * a ring sized by total pairwise volume, connected by quadratic-bezier ribbons\n * whose thickness encodes pair weight. Built from a symmetric flows adjacency\n * matrix. DOM-free + deterministic — the same ribbon paths render in Node and\n * the browser (04 §7.1). Circular layouts step clockwise (LTR) or CCW (RTL) so\n * node order mirrors per §7.4.\n */\nimport { arc } from 'd3-shape';\nconst TAU = Math.PI * 2;\nfunction vizColor(index) {\n return `var(--viz-${(index % 8) + 1})`;\n}\nfunction pointOnCircle(cx, cy, radius, angle) {\n // Angles measured from 12 o'clock, clockwise.\n return { x: cx + Math.sin(angle) * radius, y: cy - Math.cos(angle) * radius };\n}\n/**\n * Chord layout for `nodes` and a symmetric `weights` matrix\n * (weights[i][j] = volume between node i and node j; the diagonal is ignored).\n * Nodes with zero total weight still receive a minimal arc so the ring stays\n * stable. Returns empty layout for <2 nodes or a non-positive size.\n */\nexport function chordLayout(nodes, weights, options) {\n const { size, thickness = 12, padAngle = 0.04, rtl = false } = options;\n const n = nodes.length;\n const radius = Math.max(0, size / 2);\n const center = { x: radius, y: radius };\n if (n < 2 || radius <= 0)\n return { arcs: [], ribbons: [], radius, center };\n const innerRing = radius - thickness;\n const totals = nodes.map((_, i) => {\n let sum = 0;\n for (let j = 0; j < n; j += 1) {\n if (i === j)\n continue;\n const w = weights[i]?.[j];\n if (Number.isFinite(w) && w > 0)\n sum += w;\n }\n return sum;\n });\n const grandTotal = totals.reduce((s, v) => s + v, 0);\n const totalPad = padAngle * n;\n const usable = Math.max(0, TAU - totalPad);\n // Equal split fallback when there is no weight at all.\n const share = (value) => (grandTotal > 0 ? (value / grandTotal) * usable : usable / n);\n const arcGen = arc()\n .innerRadius(innerRing)\n .outerRadius(radius);\n const arcs = [];\n let angle = 0;\n const direction = rtl ? -1 : 1;\n for (let i = 0; i < n; i += 1) {\n const span = share(totals[i]);\n const start = angle + padAngle / 2;\n const end = start + span;\n angle = end + padAngle / 2;\n const node = nodes[i];\n // d3 arc angles are clockwise from 12 o'clock; apply direction for RTL.\n const a0 = direction === 1 ? start : TAU - end;\n const a1 = direction === 1 ? end : TAU - start;\n arcs.push({\n id: node.id,\n label: node.label,\n startAngle: a0,\n endAngle: a1,\n midAngle: (a0 + a1) / 2,\n total: totals[i],\n path: arcGen({ startAngle: a0, endAngle: a1 }) ?? '',\n colorVar: vizColor(i),\n });\n }\n const byId = new Map(arcs.map((a) => [a.id, a]));\n const ribbons = [];\n for (let i = 0; i < n; i += 1) {\n for (let j = i + 1; j < n; j += 1) {\n const w = weights[i]?.[j];\n if (!Number.isFinite(w) || w <= 0)\n continue;\n const a = arcs[i];\n const b = arcs[j];\n const p1 = pointOnCircle(center.x, center.y, innerRing, a.midAngle);\n const p2 = pointOnCircle(center.x, center.y, innerRing, b.midAngle);\n // Quadratic bezier bowed toward the ring center.\n const path = `M${p1.x.toFixed(3)},${p1.y.toFixed(3)}Q${center.x.toFixed(3)},${center.y.toFixed(3)} ${p2.x.toFixed(3)},${p2.y.toFixed(3)}`;\n ribbons.push({ from: nodes[i].id, to: nodes[j].id, weight: w, path, colorVar: byId.get(a.id).colorVar });\n }\n }\n return { arcs, ribbons, radius, center };\n}\n/** Build a symmetric adjacency matrix from flows links keyed by node id. */\nexport function adjacencyMatrix(nodeIds, links) {\n const index = new Map(nodeIds.map((id, i) => [id, i]));\n const matrix = nodeIds.map(() => nodeIds.map(() => 0));\n for (const link of links) {\n const i = index.get(link.from);\n const j = index.get(link.to);\n if (i === undefined || j === undefined || i === j)\n continue;\n const rowI = matrix[i];\n const rowJ = matrix[j];\n if (rowI === undefined || rowJ === undefined)\n continue;\n const w = Number.isFinite(link.weight) ? Math.max(0, link.weight) : 0;\n rowI[j] = (rowI[j] ?? 0) + w;\n rowJ[i] = (rowJ[i] ?? 0) + w;\n }\n return matrix;\n}\n//# sourceMappingURL=chord.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { adjacencyMatrix, chordLayout } from '../geometry/chord.js';\nimport { useChartDir } from '../hooks/useRtl.js';\nimport { useMountAnimation } from '../hooks/useMountAnimation.js';\nexport function Chord({ nodes, links, labels, size = 220, thickness = 12, showLegend = true, dir, a11yFallback, className, }) {\n const resolvedDir = useChartDir(dir);\n const mounted = useMountAnimation();\n const rtl = resolvedDir === 'rtl';\n const matrix = adjacencyMatrix(nodes.map((n) => n.id), links);\n const layout = chordLayout(nodes, matrix, { size, thickness, rtl });\n const maxWeight = layout.ribbons.reduce((m, r) => Math.max(m, r.weight), 0);\n return (_jsxs(\"div\", { className: className === undefined ? 'adm-donut' : `adm-donut ${className}`, ...(dir !== undefined ? { dir: resolvedDir } : {}), \"data-export-node\": \"\", children: [_jsxs(\"svg\", { role: \"img\", \"aria-label\": labels.label, width: size, height: size, viewBox: `0 0 ${size} ${size}`, children: [labels.description !== undefined && _jsx(\"desc\", { children: labels.description }), _jsxs(\"g\", { \"data-chord\": \"\", children: [layout.ribbons.map((ribbon, i) => (_jsx(\"path\", { className: \"adm-chart-fade\", style: { '--adm-fade': mounted ? '1' : '0', '--adm-stagger': `${i * 60}ms` }, d: ribbon.path, fill: \"none\", stroke: ribbon.colorVar, strokeWidth: maxWeight > 0 ? 1.5 + (ribbon.weight / maxWeight) * 5 : 2, strokeOpacity: 0.45, strokeLinecap: \"round\", \"data-ribbon\": `${ribbon.from}-${ribbon.to}` }, `${ribbon.from}-${ribbon.to}`))), layout.arcs.map((arc) => (_jsx(\"path\", { d: arc.path, fill: arc.colorVar, \"data-node\": arc.id, transform: `translate(${layout.center.x}, ${layout.center.y})` }, arc.id)))] })] }), showLegend && (_jsx(\"ul\", { className: \"adm-donut-legend\", children: layout.arcs.map((arc) => (_jsxs(\"li\", { className: \"adm-donut-legend-row\", children: [_jsx(\"span\", { className: \"adm-donut-legend-dot\", style: { '--adm-dot': arc.colorVar }, \"aria-hidden\": \"true\" }), _jsx(\"span\", { children: arc.label }), _jsx(\"span\", { className: \"adm-donut-legend-value\", children: Math.round(arc.total) })] }, arc.id))) })), a11yFallback !== undefined && _jsx(\"div\", { className: \"adm-chart-sr\", children: a11yFallback })] }));\n}\n//# sourceMappingURL=Chord.js.map","/**\n * Pure word-cloud geometry (`chart-wordcloud`, research/widget-registry.md §2):\n * terms sized by frequency and flowed into wrapped rows within a fixed width.\n * Widths are estimated from character count (no DOM text metrics) so the layout\n * is byte-identical in a report worker and the browser (04 §7.1). Terms flow\n * start→end; RTL mirrors each row's x per §7.4.\n */\nfunction vizColor(index) {\n return `var(--viz-${(index % 8) + 1})`;\n}\n/** Deterministic width estimate: average glyph advance ≈ 0.58em + padding. */\nfunction estimateWidth(term, fontSize) {\n return term.length * fontSize * 0.58 + fontSize * 0.5;\n}\n/**\n * Flow tokens into rows. Font size scales linearly with weight across the\n * observed [min,max]; a single distinct weight maps to the max size. Returns\n * empty tokens for a non-positive width or no terms.\n */\nexport function wordCloudLayout(input, options) {\n const { width, maxTerms = Infinity, minFontSize = 13, maxFontSize = 40, gapX = 14, lineGap = 10, rtl = false, } = options;\n const terms = input\n .filter((w) => Number.isFinite(w.weight) && w.weight > 0)\n .slice(0, Number.isFinite(maxTerms) ? maxTerms : undefined);\n if (width <= 0 || terms.length === 0)\n return { tokens: [], width: Math.max(0, width), height: 0 };\n const weights = terms.map((t) => t.weight);\n const lo = Math.min(...weights);\n const hi = Math.max(...weights);\n const fontFor = (weight) => {\n if (hi === lo)\n return maxFontSize;\n return Math.round(minFontSize + ((weight - lo) / (hi - lo)) * (maxFontSize - minFontSize));\n };\n // First pass: assign sizes + widths, flow into rows (start-aligned).\n const rows = [];\n let row = [];\n let cursorX = 0;\n let rowMaxFont = 0;\n let y = 0;\n const commitRow = () => {\n if (row.length === 0)\n return;\n const lineHeight = rowMaxFont + lineGap;\n for (const token of row)\n token.y = y + lineHeight / 2;\n rows.push(row);\n y += lineHeight;\n row = [];\n cursorX = 0;\n rowMaxFont = 0;\n };\n terms.forEach((term, index) => {\n const fontSize = fontFor(term.weight);\n const w = estimateWidth(term.term, fontSize);\n if (row.length > 0 && cursorX + gapX + w > width)\n commitRow();\n const token = {\n term: term.term,\n weight: term.weight,\n fontSize,\n x: cursorX,\n y: 0,\n width: w,\n colorVar: vizColor(index),\n };\n row.push(token);\n cursorX += w + gapX;\n rowMaxFont = Math.max(rowMaxFont, fontSize);\n });\n commitRow();\n const tokens = rows.flat();\n if (rtl) {\n for (const token of tokens)\n token.x = width - token.x - token.width;\n }\n return { tokens, width, height: y };\n}\n//# sourceMappingURL=wordcloud.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { wordCloudLayout } from '../geometry/wordcloud.js';\nimport { ChartSurface } from './ChartSurface.js';\nexport function WordCloud({ data, labels, height = 200, maxTerms, minFontSize, maxFontSize, dir, a11yFallback, className, }) {\n return (_jsx(ChartSurface, { labels: labels, height: height, ...(dir !== undefined ? { dir } : {}), ...(a11yFallback !== undefined ? { a11yFallback } : {}), ...(className !== undefined ? { className } : {}), padding: { top: 6, right: 6, bottom: 6, left: 6 }, children: ({ innerWidth, innerHeight, rtl, mounted }) => {\n if (innerWidth <= 0)\n return null;\n // Geometry mirrors each row's start edge in RTL, so the text anchor\n // stays \"start\" and the term boxes read end→start.\n const { tokens, height: contentHeight } = wordCloudLayout(data, {\n width: innerWidth,\n rtl,\n ...(maxTerms !== undefined ? { maxTerms } : {}),\n ...(minFontSize !== undefined ? { minFontSize } : {}),\n ...(maxFontSize !== undefined ? { maxFontSize } : {}),\n });\n // Vertically center the cloud within the plot area.\n const offsetY = Math.max(0, (innerHeight - contentHeight) / 2);\n return (_jsx(\"g\", { \"data-wordcloud\": \"\", transform: `translate(0, ${offsetY})`, children: tokens.map((token, i) => (_jsx(\"text\", { x: token.x, y: token.y, fontSize: token.fontSize, fontWeight: 700, fill: token.colorVar, textAnchor: \"start\", dominantBaseline: \"middle\", className: \"adm-chart-fade\", style: { '--adm-fade': mounted ? '1' : '0', '--adm-stagger': `${i * 40}ms` }, \"data-term\": token.term, children: token.term }, `${token.term}-${i}`))) }));\n } }));\n}\n//# sourceMappingURL=WordCloud.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * `charts` family — part-to-whole & hierarchy wrappers (04-T09): map stored\n * instance config + §3 envelopes onto the @adminium/charts primitives. Loaded\n * lazily (one chunk per family, 04 §2.3); components render only the LOADED\n * state — WidgetFrame owns skeleton/empty/error. Accessible names come from\n * `config.title` (rendered as the SVG aria-label). Direction flows from the\n * ChartDirectionContext the dashboard bridges from the i18n `dir` (04 §7.4).\n */\nimport { Chord, Funnel, Radar, RadialBar, Sunburst, Treemap, WordCloud } from '@adminium/charts';\nimport { formatMetricValue, formatOptionsOf } from '../../lib/format.js';\nimport { chordInputsOf, funnelInputsOf, radarInputsOf, radialBarInputsOf, sunburstInputsOf, treemapInputsOf, wordcloudInputsOf, } from './part-whole-config.js';\nfunction BadShape() {\n return _jsx(\"p\", { className: \"px-4 pb-4 text-body-sm text-fg-muted\", children: \"Unexpected data shape.\" });\n}\n// --- chart-treemap -----------------------------------------------------------\nexport function ChartTreemapWidget({ config, data }) {\n const inputs = treemapInputsOf(data);\n if (inputs === null)\n return _jsx(BadShape, {});\n const opts = formatOptionsOf(config);\n return (_jsx(\"div\", { className: \"px-4 pb-4 compact:px-3 compact:pb-3\", \"data-widget\": \"chart-treemap\", children: _jsx(Treemap, { data: inputs, labels: { label: config.title ?? 'Treemap' }, maxTiles: config.maxTiles, height: config.height, format: (value) => formatMetricValue(value, config.metricFormat, opts) }) }));\n}\n// --- chart-sunburst ----------------------------------------------------------\nexport function ChartSunburstWidget({ config, data }) {\n const inputs = sunburstInputsOf(data);\n if (inputs === null)\n return _jsx(BadShape, {});\n return (_jsx(\"div\", { className: \"flex justify-center px-4 pb-4 compact:px-3 compact:pb-3\", \"data-widget\": \"chart-sunburst\", children: _jsx(Sunburst, { data: inputs, labels: { label: config.title ?? 'Sunburst' }, size: config.size, showLegend: config.showLegend }) }));\n}\n// --- chart-funnel ------------------------------------------------------------\nexport function ChartFunnelWidget({ config, data }) {\n const inputs = funnelInputsOf(data);\n if (inputs === null)\n return _jsx(BadShape, {});\n const opts = formatOptionsOf(config);\n return (_jsx(\"div\", { className: \"px-4 pb-4 compact:px-3 compact:pb-3\", \"data-widget\": \"chart-funnel\", children: _jsx(Funnel, { data: inputs, labels: { label: config.title ?? 'Funnel' }, variant: config.variant, showStepConversion: config.showStepConversion, overallFooter: config.overallFooter, height: config.height, format: (value) => formatMetricValue(value, config.metricFormat, opts) }) }));\n}\n// --- chart-radial-bar --------------------------------------------------------\nexport function ChartRadialBarWidget({ config, data }) {\n const inputs = radialBarInputsOf(data, config.maxRings);\n if (inputs === null)\n return _jsx(BadShape, {});\n return (_jsx(\"div\", { className: \"flex justify-center px-4 pb-4 compact:px-3 compact:pb-3\", \"data-widget\": \"chart-radial-bar\", children: _jsx(RadialBar, { data: inputs, labels: { label: config.title ?? 'Radial bar' }, size: config.size, showLegend: config.showLegend }) }));\n}\n// --- chart-radar -------------------------------------------------------------\nexport function ChartRadarWidget({ config, data }) {\n const inputs = radarInputsOf(data);\n if (inputs === null || inputs.axes.length === 0)\n return _jsx(BadShape, {});\n return (_jsx(\"div\", { className: \"flex justify-center px-4 pb-4 compact:px-3 compact:pb-3\", \"data-widget\": \"chart-radar\", children: _jsx(Radar, { axes: inputs.axes, series: inputs.series, labels: { label: config.title ?? 'Radar' }, size: config.size, levels: config.levels, showLegend: config.showLegend }) }));\n}\n// --- chart-chord -------------------------------------------------------------\nexport function ChartChordWidget({ config, data }) {\n const inputs = chordInputsOf(data, config.nodeLimit);\n if (inputs === null)\n return _jsx(BadShape, {});\n return (_jsx(\"div\", { className: \"flex justify-center px-4 pb-4 compact:px-3 compact:pb-3\", \"data-widget\": \"chart-chord\", children: _jsx(Chord, { nodes: inputs.nodes, links: inputs.links, labels: { label: config.title ?? 'Chord' }, size: config.size, showLegend: config.showLegend }) }));\n}\n// --- chart-wordcloud ---------------------------------------------------------\nexport function ChartWordcloudWidget({ config, data }) {\n const inputs = wordcloudInputsOf(data, config.maxTerms);\n if (inputs === null)\n return _jsx(BadShape, {});\n return (_jsx(\"div\", { className: \"px-4 pb-4 compact:px-3 compact:pb-3\", \"data-widget\": \"chart-wordcloud\", children: _jsx(WordCloud, { data: inputs, labels: { label: config.title ?? 'Word cloud' }, height: config.height, maxTerms: config.maxTerms, minFontSize: config.minFontSize, maxFontSize: config.maxFontSize }) }));\n}\n//# sourceMappingURL=PartWholeWidgets.js.map"],"names":["vizColor","index","rampColor","rank","count","step","worstRatio","row","length","min","max","sum","area","side2","sum2","treemapTiles","input","options","width","height","maxTiles","otherLabel","items","d","colorIndex","item","i","kept","rest","other","total","scaled","a","b","placed","cursor","shortSide","layoutRow","rowArea","r","rowWidth","offset","cell","cellHeight","rowHeight","cellWidth","current","withCell","rankByIndex","p","source","mirrorTiles","tiles","tile","Treemap","data","labels","labelMinWidth","labelMinHeight","format","formatCompact","dir","a11yFallback","className","_jsx","ChartSurface","innerWidth","innerHeight","rtl","mounted","laidOut","showLabel","_jsxs","_Fragment","TAU","childColor","sunburstArcs","parents","size","outer","innerHole","band","normalized","children","s","c","grandTotal","innerArc","arc","outerArc","arcs","angle","parent","parentSpan","parentStart","parentEnd","childAngle","child","childSpan","cStart","cEnd","Sunburst","innerRadiusRatio","showLegend","resolvedDir","useChartDir","useMountAnimation","innerRadius","vizAlphaVar","funnelLayout","stages","head","out","stage","prev","widthFrac","tail","Funnel","variant","showStepConversion","overallFooter","overallConversion","barHeight","barWidth","startX","x","y","textX","anchor","clampFraction","value","radialBarRings","thickness","gap","radius","inner","outerR","fraction","track","trackPath","valuePath","defaultFormat","RadialBar","rings","ring","angleFor","polygonPath","points","radarLayout","axisLabels","seriesInput","levels","center","domainMax","v","angles","_","axes","label","l","level","series","si","raw","norm","LABEL_PAD","Radar","layout","viewSize","axis","dx","dy","pointOnCircle","cx","cy","chordLayout","nodes","weights","padAngle","n","innerRing","totals","j","w","totalPad","usable","share","arcGen","direction","span","start","end","node","a0","a1","byId","ribbons","p1","p2","path","adjacencyMatrix","nodeIds","links","id","matrix","link","rowI","rowJ","Chord","maxWeight","m","ribbon","estimateWidth","term","fontSize","wordCloudLayout","maxTerms","minFontSize","maxFontSize","gapX","lineGap","terms","t","lo","hi","fontFor","weight","rows","cursorX","rowMaxFont","commitRow","lineHeight","token","tokens","WordCloud","contentHeight","offsetY","BadShape","ChartTreemapWidget","config","inputs","treemapInputsOf","opts","formatOptionsOf","formatMetricValue","ChartSunburstWidget","sunburstInputsOf","ChartFunnelWidget","funnelInputsOf","ChartRadialBarWidget","radialBarInputsOf","ChartRadarWidget","radarInputsOf","ChartChordWidget","chordInputsOf","ChartWordcloudWidget","wordcloudInputsOf"],"mappings":"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"}