@altertable/data-app 0.66.0 → 0.68.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/CONTRIBUTING.md +22 -16
  2. package/dist/chunks/{contract-19ckn3n7.js → index-23dktynd.js} +8 -6
  3. package/dist/chunks/index-23dktynd.js.map +10 -0
  4. package/dist/chunks/{contract-rfbakka4.js → index-ag0cgnvq.js} +169 -35
  5. package/dist/chunks/index-ag0cgnvq.js.map +13 -0
  6. package/dist/chunks/index-dq7b35fn.js +307 -0
  7. package/dist/chunks/index-dq7b35fn.js.map +13 -0
  8. package/dist/chunks/{contract-e11m4y7f.js → index-ev2b5aaf.js} +11 -6
  9. package/dist/chunks/{contract-e11m4y7f.js.map → index-ev2b5aaf.js.map} +3 -3
  10. package/dist/chunks/{contract-awa2d5b1.js → index-f5cnbrjz.js} +19 -2
  11. package/dist/chunks/{contract-awa2d5b1.js.map → index-f5cnbrjz.js.map} +4 -3
  12. package/dist/chunks/{contract-havnjmdr.js → index-gvers8jw.js} +2429 -1110
  13. package/dist/chunks/index-gvers8jw.js.map +109 -0
  14. package/dist/chunks/{contract-13j5zb3c.js → index-ktmvs916.js} +8 -7
  15. package/dist/chunks/index-ktmvs916.js.map +13 -0
  16. package/dist/chunks/index-mt93ff2b.js +28 -0
  17. package/dist/chunks/index-mt93ff2b.js.map +10 -0
  18. package/dist/chunks/{contract-tf8c3qpv.js → index-qd5xgx6y.js} +46 -5
  19. package/dist/chunks/index-qd5xgx6y.js.map +13 -0
  20. package/dist/chunks/{contract-pk603qj7.js → index-x69p7cv7.js} +12 -9
  21. package/dist/chunks/index-x69p7cv7.js.map +10 -0
  22. package/dist/client/index.js +6 -6
  23. package/dist/core/appearance.js +1 -1
  24. package/dist/core/config.js +7 -3
  25. package/dist/core/config.js.map +1 -1
  26. package/dist/core/contract.js +14 -6
  27. package/dist/core/contract.js.map +1 -1
  28. package/dist/core/format.js +1 -1
  29. package/dist/embed/index.js +12 -10
  30. package/dist/embed/index.js.map +4 -4
  31. package/dist/index.js +12 -0
  32. package/dist/index.js.map +9 -0
  33. package/dist/local.js +20 -30
  34. package/dist/local.js.map +7 -8
  35. package/dist/react/embed/index.js +1 -1
  36. package/dist/react/embed/index.js.map +2 -2
  37. package/dist/react/index.js +79 -29
  38. package/dist/react/index.js.map +5 -6
  39. package/dist/react/ui/index.js +1702 -177
  40. package/dist/react/ui/index.js.map +20 -9
  41. package/dist/server.js +13 -26
  42. package/dist/server.js.map +6 -7
  43. package/dist/types/client/annotations.d.ts +4 -0
  44. package/dist/types/client/data-client.d.ts +1 -2
  45. package/dist/types/client/iframe.d.ts +4 -2
  46. package/dist/types/core/annotations.d.ts +2 -0
  47. package/dist/types/core/config.d.ts +48 -4
  48. package/dist/types/core/contract.d.ts +20 -12
  49. package/dist/types/core/dimension.d.ts +6 -4
  50. package/dist/types/core/filters.d.ts +44 -0
  51. package/dist/types/core/messages.d.ts +2 -0
  52. package/dist/types/core/operation-types.d.ts +5 -2
  53. package/dist/types/core/operation.d.ts +3 -4
  54. package/dist/types/core/queries.d.ts +16 -0
  55. package/dist/types/core/uuid.d.ts +2 -0
  56. package/dist/types/core/variables.d.ts +32 -13
  57. package/dist/types/embed/runtime-html.d.ts +2 -0
  58. package/dist/types/embed/source.d.ts +2 -1
  59. package/dist/types/index.d.ts +3 -0
  60. package/dist/types/react/annotations/AnnotationBar.d.ts +7 -1
  61. package/dist/types/react/annotations/AnnotationEditor.d.ts +2 -1
  62. package/dist/types/react/annotations/useDataAppAnnotations.d.ts +3 -0
  63. package/dist/types/react/app-context.d.ts +3 -0
  64. package/dist/types/react/index.d.ts +3 -3
  65. package/dist/types/react/mount.d.ts +6 -4
  66. package/dist/types/react/style-contract.d.ts +34 -2
  67. package/dist/types/react/ui/Button.d.ts +3 -3
  68. package/dist/types/react/ui/ChartLegend.d.ts +31 -0
  69. package/dist/types/react/ui/Checkbox.d.ts +15 -4
  70. package/dist/types/react/ui/CheckboxGroup.d.ts +7 -0
  71. package/dist/types/react/ui/{Combobox.d.ts → ChoicePicker.d.ts} +10 -15
  72. package/dist/types/react/ui/ComposedChart.d.ts +41 -0
  73. package/dist/types/react/ui/ComposedChartLegend.d.ts +8 -0
  74. package/dist/types/react/ui/DataAppFrame.d.ts +1 -2
  75. package/dist/types/react/ui/DimensionPicker.d.ts +1 -1
  76. package/dist/types/react/ui/FilterActions.d.ts +10 -0
  77. package/dist/types/react/ui/FilterBar.d.ts +3 -0
  78. package/dist/types/react/ui/FunnelChart.d.ts +20 -0
  79. package/dist/types/react/ui/GettingStarted.d.ts +2 -4
  80. package/dist/types/react/ui/JourneyChart.d.ts +10 -0
  81. package/dist/types/react/ui/Menu.d.ts +12 -0
  82. package/dist/types/react/ui/NumberField.d.ts +27 -0
  83. package/dist/types/react/ui/NumberFilterPicker.d.ts +9 -0
  84. package/dist/types/react/ui/PieChart.d.ts +5 -2
  85. package/dist/types/react/ui/RadioGroup.d.ts +18 -0
  86. package/dist/types/react/ui/RetentionChart.d.ts +27 -0
  87. package/dist/types/react/ui/SearchInput.d.ts +2 -2
  88. package/dist/types/react/ui/Select.d.ts +14 -0
  89. package/dist/types/react/ui/SelectionMark.d.ts +2 -1
  90. package/dist/types/react/ui/TooltipSurface.d.ts +3 -0
  91. package/dist/types/react/ui/chart-data.d.ts +10 -1
  92. package/dist/types/react/ui/chart-primitives.d.ts +22 -0
  93. package/dist/types/react/ui/chartColor.d.ts +1 -0
  94. package/dist/types/react/ui/icons.d.ts +1 -0
  95. package/dist/types/react/ui/index.d.ts +33 -2
  96. package/dist/types/react/ui/journey-flow.d.ts +49 -0
  97. package/dist/types/react/ui/keyboard.d.ts +6 -0
  98. package/dist/types/react/ui/shortcuts.d.ts +7 -0
  99. package/dist/types/react/ui/useAppAppearance.d.ts +1 -1
  100. package/dist/types/react/ui/useSvgId.d.ts +2 -0
  101. package/dist/types/react/ui/variables.d.ts +4 -2
  102. package/dist/types/react/view-controls.d.ts +3 -1
  103. package/dist/types/server/handler.d.ts +4 -4
  104. package/dist/worker.js +21 -738
  105. package/docs/app-authoring.md +15 -1
  106. package/docs/client.md +8 -8
  107. package/docs/contract.md +43 -20
  108. package/docs/data-context.md +8 -6
  109. package/docs/embed.md +10 -2
  110. package/docs/formatting-and-appearance.md +23 -7
  111. package/docs/hosted-apps.md +9 -2
  112. package/docs/layout.md +1 -1
  113. package/docs/react-embed.md +3 -2
  114. package/docs/react.md +4 -3
  115. package/docs/server-bun.md +1 -1
  116. package/docs/server.md +4 -4
  117. package/docs/styling.md +10 -3
  118. package/docs/ui.md +176 -3
  119. package/docs/variables.md +80 -7
  120. package/docs/views.md +4 -8
  121. package/docs/widgets.md +19 -13
  122. package/docs/worker.md +2 -1
  123. package/examples/starter-data-app/index.tsx +34 -32
  124. package/package.json +16 -11
  125. package/dist/chunks/contract-13j5zb3c.js.map +0 -13
  126. package/dist/chunks/contract-19ckn3n7.js.map +0 -10
  127. package/dist/chunks/contract-h8a6f559.js +0 -286
  128. package/dist/chunks/contract-h8a6f559.js.map +0 -12
  129. package/dist/chunks/contract-havnjmdr.js.map +0 -99
  130. package/dist/chunks/contract-pk603qj7.js.map +0 -10
  131. package/dist/chunks/contract-rfbakka4.js.map +0 -13
  132. package/dist/chunks/contract-tf8c3qpv.js.map +0 -11
  133. package/dist/chunks/contract-wz59z8pq.js +0 -8
  134. package/dist/chunks/contract-wz59z8pq.js.map +0 -10
  135. /package/dist/chunks/{contract-m6n8ctfc.js → index-m6n8ctfc.js} +0 -0
  136. /package/dist/chunks/{contract-m6n8ctfc.js.map → index-m6n8ctfc.js.map} +0 -0
  137. /package/dist/chunks/{contract-mev09s5v.js → index-mev09s5v.js} +0 -0
  138. /package/dist/chunks/{contract-mev09s5v.js.map → index-mev09s5v.js.map} +0 -0
@@ -1,22 +1,33 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/react/shellStyles.ts", "../src/react/ui/StaticDataApp.tsx", "../src/react/ui/GettingStarted.tsx", "../src/react/ui/DataAppSkeleton.tsx", "../src/react/ui/GlossaryExplanation.tsx", "../src/react/ui/GlossaryDefinition.tsx", "../src/react/ui/TrendChart.tsx", "../src/react/ui/chart-data.ts", "../src/react/ui/LineChart.tsx", "../src/react/ui/AreaChart.tsx", "../src/react/ui/PieChart.tsx", "../src/react/ui/ScatterChart.tsx", "../src/react/ui/BarChart.tsx"],
3
+ "sources": ["../src/react/shellStyles.ts", "../src/react/ui/StaticDataApp.tsx", "../src/react/ui/GettingStarted.tsx", "../src/react/ui/DataAppSkeleton.tsx", "../src/react/ui/GlossaryExplanation.tsx", "../src/react/ui/GlossaryDefinition.tsx", "../src/react/ui/TrendChart.tsx", "../src/react/ui/chart-primitives.tsx", "../src/react/ui/ChartLegend.tsx", "../src/react/ui/chart-data.ts", "../src/react/ui/LineChart.tsx", "../src/react/ui/AreaChart.tsx", "../src/react/ui/PieChart.tsx", "../src/react/ui/ScatterChart.tsx", "../src/react/ui/BarChart.tsx", "../src/react/ui/RadioGroup.tsx", "../src/react/ui/CheckboxGroup.tsx", "../src/react/ui/ComposedChart.tsx", "../src/react/ui/ComposedChartLegend.tsx", "../src/react/ui/FunnelChart.tsx", "../src/react/ui/useSvgId.ts", "../src/react/ui/RetentionChart.tsx", "../src/react/ui/JourneyChart.tsx", "../src/react/ui/journey-flow.ts"],
4
4
  "sourcesContent": [
5
5
  "import { injectStyles } from '@/src/react/injectStyles';\nimport type { DataAppStylesOptions } from '@/src/react/styles';\n\n// Replaced with the compiled shell stylesheet by the package build.\ndeclare const SHELL_STYLES: string;\n\n/** Install shared layout, widget surface, and skeleton styles once per document, before mounting. */\nexport function injectDataAppShellStyles(\n options: DataAppStylesOptions = {}\n): HTMLStyleElement {\n return injectStyles({\n name: 'injectDataAppShellStyles',\n attribute: 'data-altertable-shell-styles',\n css: SHELL_STYLES,\n options,\n });\n}\n",
6
6
  "import {\n DataAppFrame,\n type StaticDataAppProps,\n} from '@/src/react/ui/DataAppFrame';\n\nexport type DataAppProps = StaticDataAppProps;\n\n/** Setup and static screens; fetched data uses the declared-view DataApp. */\nexport function DataApp(props: DataAppProps) {\n return <DataAppFrame {...props} />;\n}\n",
7
- "import { createDataContext as registerContext } from '@/src/react/ui/data-context';\nimport { useDeclaredResult } from '@/src/react/view-runtime';\nimport { createDataClient } from '@/src/client/data-client';\nimport type { DataAppConfig } from '@/src/core/config';\nimport { connectionCheck } from '@/src/core/contract';\nimport { createDataHooks } from '@/src/react/hooks';\nimport { AppIcon } from '@/src/react/ui/icons';\nimport { Button } from '@/src/react/ui/Button';\nimport { DataApp } from '@/src/react/ui/StaticDataApp';\nimport type { DataContext } from '@/src/react/ui/data-context';\n\nconst connectionContext = registerContext({})({\n description: 'Connection setup',\n glossary: {},\n});\n\nconst client = /* @__PURE__ */ createDataClient();\nconst { defineDataView } = /* @__PURE__ */ createDataHooks<{\n connection: ReturnType<typeof connectionCheck>;\n}>(client);\n\nconst connectionView = defineDataView({\n dataContext: connectionContext,\n operation: 'connection',\n describeInput: () => 'the connection',\n isEmpty: () => false,\n emptyFallback: { title: 'No connection' },\n});\n\n/** Query-backed connection state and next steps for a newly created app. Mount within\n * `DataAppProvider` and register `connection: connectionCheck()` on the server. */\nexport function GettingStarted({\n config,\n dataContext,\n}: {\n config: DataAppConfig;\n dataContext: DataContext;\n}) {\n const connection = useDeclaredResult(connectionView);\n const state =\n connection.view.kind === 'error' || connection.view.kind === 'stale-error'\n ? 'error'\n : connection.refreshing || !connection.snapshot\n ? 'checking'\n : 'connected';\n\n return (\n <DataApp\n config={config}\n dataContext={dataContext}\n description=\"Check your lakehouse connection, then build a view around a real question.\"\n queries={connection.queries}\n toolbarActions={\n <Button\n disabled={connection.refreshing}\n onClick={() => connection.refetch()}\n >\n Check connection\n </Button>\n }\n >\n <section\n className=\"starter-connection\"\n data-state={state}\n role={state === 'error' ? 'alert' : 'status'}\n >\n <div className=\"starter-connection-icon\">\n <AppIcon\n name={\n state === 'connected'\n ? 'check'\n : state === 'error'\n ? 'error'\n : 'loading'\n }\n size={24}\n />\n </div>\n <div className=\"starter-connection-copy\">\n <span className=\"starter-eyebrow\">Lakehouse connection</span>\n <h2>\n {state === 'connected'\n ? 'Connected'\n : state === 'error'\n ? 'Connection not verified'\n : 'Checking connection…'}\n </h2>\n <p>\n {state === 'connected'\n ? 'A query completed successfully using this app’s current profile. You’re ready to build your first view.'\n : state === 'error'\n ? connection.snapshot\n ? 'An earlier query succeeded, but the latest check failed. Check the profile and try again.'\n : 'The query could not complete. Check the profile and lakehouse access, then try again.'\n : 'Running a lightweight query with this app’s current profile.'}\n </p>\n {state === 'connected' && (\n <small>This check does not verify access to every dataset.</small>\n )}\n </div>\n {state === 'error' && (\n <Button onClick={() => connection.refetch()}>Try again</Button>\n )}\n </section>\n\n <section className=\"starter-next\" aria-labelledby=\"starter-next-title\">\n <div className=\"starter-next-heading\">\n <span className=\"starter-eyebrow\">Next steps</span>\n <h2 id=\"starter-next-title\">Turn this starter into a useful app</h2>\n <p>Start with one question your readers need answered.</p>\n </div>\n <ol className=\"starter-steps\">\n <li>\n <strong>Choose a question</strong>\n <p>\n Decide what someone should learn or do after opening this app.\n </p>\n </li>\n <li>\n <strong>Find the right data</strong>\n <p>\n Inspect the relevant catalogs, tables, and columns before writing\n the query.\n </p>\n </li>\n <li>\n <strong>Build the first view</strong>\n <p>\n Replace the connection check in <code>src/operations.ts</code>,\n then render its result in <code>src/App.tsx</code>.\n </p>\n </li>\n </ol>\n </section>\n </DataApp>\n );\n}\n",
7
+ "import { createDataContext as registerContext } from '@/src/react/ui/data-context';\nimport { useDeclaredResult } from '@/src/react/view-runtime';\nimport { createDataClient } from '@/src/client/data-client';\nimport { connectionCheck } from '@/src/core/contract';\nimport { createDataHooks } from '@/src/react/hooks';\nimport { AppIcon } from '@/src/react/ui/icons';\nimport { Button } from '@/src/react/ui/Button';\nimport { DataApp } from '@/src/react/ui/StaticDataApp';\nimport type { DataContext } from '@/src/react/ui/data-context';\n\nconst connectionContext = registerContext({})({\n description: 'Connection setup',\n glossary: {},\n});\n\nconst client = /* @__PURE__ */ createDataClient();\nconst { defineDataView } = /* @__PURE__ */ createDataHooks<{\n connection: ReturnType<typeof connectionCheck>;\n}>(client);\n\nconst connectionView = defineDataView({\n dataContext: connectionContext,\n operation: 'connection',\n describeInput: () => 'the connection',\n isEmpty: () => false,\n emptyFallback: { title: 'No connection' },\n});\n\n/** Query-backed connection state and next steps for a newly created app. Mount within\n * `DataAppProvider` and register `connection: connectionCheck(app.queries)` on the server. */\nexport function GettingStarted({ dataContext }: { dataContext: DataContext }) {\n const connection = useDeclaredResult(connectionView);\n const state =\n connection.view.kind === 'error' || connection.view.kind === 'stale-error'\n ? 'error'\n : connection.refreshing || !connection.snapshot\n ? 'checking'\n : 'connected';\n\n return (\n <DataApp\n dataContext={dataContext}\n description=\"Check your lakehouse connection, then build a view around a real question.\"\n queries={connection.queries}\n toolbarActions={\n <Button\n disabled={connection.refreshing}\n onClick={() => connection.refetch()}\n >\n Check connection\n </Button>\n }\n >\n <section\n className=\"starter-connection\"\n data-state={state}\n role={state === 'error' ? 'alert' : 'status'}\n >\n <div className=\"starter-connection-icon\">\n <AppIcon\n name={\n state === 'connected'\n ? 'check'\n : state === 'error'\n ? 'error'\n : 'loading'\n }\n size={24}\n />\n </div>\n <div className=\"starter-connection-copy\">\n <span className=\"starter-eyebrow\">Lakehouse connection</span>\n <h2>\n {state === 'connected'\n ? 'Connected'\n : state === 'error'\n ? 'Connection not verified'\n : 'Checking connection…'}\n </h2>\n <p>\n {state === 'connected'\n ? 'A query completed successfully using this app’s current profile. You’re ready to build your first view.'\n : state === 'error'\n ? connection.snapshot\n ? 'An earlier query succeeded, but the latest check failed. Check the profile and try again.'\n : 'The query could not complete. Check the profile and lakehouse access, then try again.'\n : 'Running a lightweight query with this app’s current profile.'}\n </p>\n {state === 'connected' && (\n <small>This check does not verify access to every dataset.</small>\n )}\n </div>\n {state === 'error' && (\n <Button onClick={() => connection.refetch()}>Try again</Button>\n )}\n </section>\n\n <section className=\"starter-next\" aria-labelledby=\"starter-next-title\">\n <div className=\"starter-next-heading\">\n <span className=\"starter-eyebrow\">Next steps</span>\n <h2 id=\"starter-next-title\">Turn this starter into a useful app</h2>\n <p>Start with one question your readers need answered.</p>\n </div>\n <ol className=\"starter-steps\">\n <li>\n <strong>Choose a question</strong>\n <p>\n Decide what someone should learn or do after opening this app.\n </p>\n </li>\n <li>\n <strong>Find the right data</strong>\n <p>\n Inspect the relevant catalogs, tables, and columns before writing\n the query.\n </p>\n </li>\n <li>\n <strong>Build the first view</strong>\n <p>\n Replace the connection check in <code>src/operations.ts</code>,\n then render its result in <code>src/App.tsx</code>.\n </p>\n </li>\n </ol>\n </section>\n </DataApp>\n );\n}\n",
8
8
  "import type { ComponentPropsWithRef, ReactNode } from 'react';\nimport { DataWidget } from '@/src/react/ui/DataWidget';\nimport { Grid } from '@/src/react/ui/Grid';\nimport { MetricWidget } from '@/src/react/ui/MetricWidget';\nimport { Skeleton } from '@/src/react/ui/Skeleton';\nimport { VisualizationWidget } from '@/src/react/ui/VisualizationWidget';\nimport { classNames } from '@/src/react/ui/classNames';\n\nexport type DataAppSkeletonProps = Omit<\n ComponentPropsWithRef<'output'>,\n 'children' | 'role' | 'aria-busy'\n> & {\n header?: ReactNode;\n footer?: ReactNode;\n};\n\nconst chartHeights = [40, 60, 50, 80, 60, 100, 80, 60];\n\n/** Host-side placeholder while a data app starts. Header and footer slots remain host-owned; widget placeholders are decorative. */\nexport function DataAppSkeleton({\n header,\n footer,\n className,\n ...props\n}: DataAppSkeletonProps) {\n return (\n <output\n aria-label=\"Loading data app\"\n {...props}\n aria-busy=\"true\"\n className={classNames('altertable-data-app-skeleton', className)}\n >\n <div className=\"altertable-data-app-skeleton-content\">\n {header != null && header !== false && (\n <div className=\"altertable-data-app-skeleton-header\">{header}</div>\n )}\n <div className=\"altertable-data-app-skeleton-body\" aria-hidden=\"true\">\n <Grid columns={3} gap=\"md\">\n {[0, 1, 2].map(item => (\n <MetricWidget key={item} label=\"\" loading />\n ))}\n </Grid>\n <VisualizationWidget\n title={\n <Skeleton className=\"altertable-data-app-skeleton-widget-title\" />\n }\n visual={\n <div className=\"altertable-data-app-skeleton-chart\">\n {chartHeights.map((height, index) => (\n <Skeleton key={index} style={{ height: `${height}%` }} />\n ))}\n </div>\n }\n />\n <DataWidget\n title={\n <Skeleton className=\"altertable-data-app-skeleton-widget-title\" />\n }\n >\n <div className=\"altertable-data-app-skeleton-rows\">\n {[0, 1, 2].map(row => (\n <div className=\"altertable-data-app-skeleton-row\" key={row}>\n <Skeleton />\n <Skeleton />\n <Skeleton />\n </div>\n ))}\n </div>\n </DataWidget>\n </div>\n {footer != null && footer !== false && (\n <div className=\"altertable-data-app-skeleton-footer\">{footer}</div>\n )}\n </div>\n </output>\n );\n}\n",
9
9
  "import { AppIcon } from '@/src/react/ui/icons';\nimport type { ComponentPropsWithRef, ReactNode } from 'react';\nimport type { DisclosedQuery } from '@/src/core/contract';\nimport type { DataContext, GlossaryEntry } from '@/src/react/ui/data-context';\nimport { AboutData, type AboutEmpty } from '@/src/react/ui/AboutData';\n\nexport type GlossaryExplanationProps = {\n entry: GlossaryEntry;\n empty?: AboutEmpty;\n title?: ReactNode;\n description?: ReactNode;\n visual?: ReactNode;\n queries?: DisclosedQuery[];\n dataContext?: DataContext;\n} & Omit<ComponentPropsWithRef<'button'>, 'children' | 'title'>;\n\n/** Opens the inspect sheet for one glossary term. Prefer a card's evidence slot\n * when the surface already has a title, description, and visual. */\nexport function GlossaryExplanation({\n entry,\n empty,\n title,\n description,\n visual,\n queries,\n dataContext,\n className,\n ...props\n}: GlossaryExplanationProps) {\n return (\n <AboutData\n {...props}\n shortcut={false}\n iconOnly\n variant=\"ghost\"\n title={title ?? entry.term}\n description={description}\n visual={visual}\n references={{ kind: 'entries', entries: [entry] }}\n empty={empty}\n dataContext={dataContext}\n queries={queries}\n className={className ?? 'altertable-inspect-trigger'}\n tooltip=\"Explore this term\"\n aria-label={props['aria-label'] ?? `Explore ${entry.term}`}\n >\n <AppIcon name=\"openDetails\" />\n </AboutData>\n );\n}\n",
10
10
  "import type { ReactNode } from 'react';\nimport type { GlossaryEntry } from '@/src/react/ui/data-context';\nimport { HelpPopover } from '@/src/react/ui/HelpPopover';\n\nexport type GlossaryDefinitionProps = {\n entry: GlossaryEntry;\n children?: ReactNode;\n};\n\nexport function GlossaryDefinition({\n entry,\n children,\n}: GlossaryDefinitionProps) {\n return (\n <HelpPopover\n trigger={children ?? entry.term}\n triggerLabel={`Explain ${entry.term}`}\n label={entry.term}\n triggerProps={{\n className: 'altertable-glossary-definition-trigger',\n 'data-atbl-control': 'help',\n }}\n panelProps={{ className: 'altertable-glossary-definition-popover' }}\n >\n <strong>{entry.term}</strong>\n <div>{entry.definition}</div>\n </HelpPopover>\n );\n}\n",
11
- "import { Tooltip } from '@/src/react/ui/Tooltip';\nimport { useLayoutEffect, useRef } from 'react';\nimport type { ValueChartProps } from '@/src/react/ui/chart-data';\nimport { validateChartItems } from '@/src/react/ui/chart-data';\n\n/** Ordered, equally spaced samples; negative values share an explicit zero baseline. */\nexport function TrendChart({\n items,\n unit,\n ariaLabel,\n formatValue = value => new Intl.NumberFormat().format(value),\n area = false,\n}: ValueChartProps & { area?: boolean }) {\n validateChartItems(area ? 'area' : 'line', items);\n const scrollport = useRef<HTMLDivElement>(null);\n useLayoutEffect(() => {\n const element = scrollport.current;\n if (element) element.scrollLeft = element.scrollWidth - element.clientWidth;\n }, [items]);\n const magnitude = items.reduce(\n (max, item) => Math.max(max, Math.abs(item.value)),\n 1\n );\n const low = items.reduce(\n (min, item) => Math.min(min, item.value / magnitude),\n 0\n );\n const high = items.reduce(\n (max, item) => Math.max(max, item.value / magnitude),\n 0\n );\n const span = high - low || 1;\n function y(value: number) {\n return 208 - ((value / magnitude - low) / span) * 196;\n }\n const points = items.map((item, index) => ({\n x: ((index + 0.5) / items.length) * 1000,\n y: y(item.value),\n }));\n const path = points\n .map((point, index) => `${index ? 'L' : 'M'}${point.x},${point.y}`)\n .join(' ');\n const first = points[0];\n const last = points.at(-1);\n return (\n <section className=\"altertable-trend-chart\" aria-label={ariaLabel}>\n {items.length === 0 && <span>No data</span>}\n {items.length > 0 && (\n <>\n <div className=\"altertable-trend-scroll\" ref={scrollport}>\n <div\n className=\"altertable-trend-plot\"\n style={{ minWidth: items.length * 40 }}\n >\n <svg\n viewBox=\"0 0 1000 220\"\n preserveAspectRatio=\"none\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <line\n className=\"altertable-trend-baseline\"\n x1=\"0\"\n x2=\"1000\"\n y1={y(0)}\n y2={y(0)}\n vectorEffect=\"non-scaling-stroke\"\n />\n {area && first && last && (\n <path\n className=\"altertable-trend-fill\"\n d={`${path} L${last.x},${y(0)} L${first.x},${y(0)} Z`}\n />\n )}\n <path\n className=\"altertable-trend-line\"\n d={path}\n vectorEffect=\"non-scaling-stroke\"\n />\n </svg>\n <div className=\"altertable-trend-points\">\n {items.map((item, index) => (\n <Tooltip\n key={item.id}\n variant=\"chart\"\n content={\n <>\n <strong>{item.label}</strong>\n <span>\n {formatValue(item.value)} {unit}\n </span>\n </>\n }\n className=\"altertable-chart-column\"\n >\n <button\n data-atbl-focus=\"ring\"\n data-atbl-control=\"action\"\n type=\"button\"\n tabIndex={-1}\n className=\"altertable-trend-point\"\n aria-label={`${item.label}: ${formatValue(item.value)} ${unit}`}\n >\n <span className=\"altertable-trend-hit\">\n <span\n className=\"altertable-trend-dot\"\n style={{ top: `${(points[index]!.y / 220) * 100}%` }}\n />\n </span>\n <span className=\"altertable-trend-label\">\n {item.label}\n </span>\n </button>\n </Tooltip>\n ))}\n </div>\n </div>\n </div>\n </>\n )}\n </section>\n );\n}\n",
12
- "import { invariant } from '@/src/core/invariant';\n\n/** Ordered category or time-series sample. IDs are unique and nonblank; values are finite. */\nexport type ChartItem = { id: string; label: string; value: number };\nexport type ValueChartProps = {\n /** Ordered samples; the chart validates IDs and values when rendering. */\n items: readonly ChartItem[];\n unit: string;\n ariaLabel: string;\n formatValue?: (value: number) => string;\n};\n\n/** Independent observation on two finite numeric axes. */\nexport type ScatterChartItem = {\n id: string;\n label: string;\n x: number;\n y: number;\n};\ntype ChartKind = 'bar' | 'line' | 'area' | 'pie' | 'scatter';\ntype ItemFor<Kind extends ChartKind> = Kind extends 'scatter'\n ? ScatterChartItem\n : ChartItem;\n/** Validate the data consumed by every chart. */\nexport function validateChartItems<Kind extends ChartKind>(\n kind: Kind,\n items: readonly ItemFor<Kind>[]\n): void {\n const ids = new Set<string>();\n for (const item of items) {\n invariant(\n item.id.trim().length > 0,\n `${kind} chart IDs must be nonempty and unique: blank ID.`\n );\n invariant(\n !ids.has(item.id),\n `${kind} chart IDs must be nonempty and unique: duplicate \"${item.id}\".`\n );\n ids.add(item.id);\n if (kind === 'scatter') {\n const point = item as ScatterChartItem;\n invariant(\n Number.isFinite(point.x) && Number.isFinite(point.y),\n `scatter chart \"${item.id}\" requires finite values for x and y.`\n );\n } else {\n const point = item as ChartItem;\n invariant(\n Number.isFinite(point.value),\n `${kind} chart \"${item.id}\" requires finite values.`\n );\n invariant(\n (kind !== 'bar' && kind !== 'pie') || point.value >= 0,\n `${kind} chart \"${item.id}\" requires nonnegative values.`\n );\n }\n }\n}\n",
11
+ "import { Tooltip } from '@/src/react/ui/Tooltip';\nimport { useLayoutEffect, useRef, useState } from 'react';\nimport {\n AreaChart as RechartsAreaChart,\n LineChart as RechartsLineChart,\n ReferenceLine,\n} from 'recharts';\nimport {\n ChartArea,\n ChartLine,\n ChartDot,\n ChartXAxis,\n ChartYAxis,\n} from '@/src/react/ui/chart-primitives';\nimport type { ValueChartProps } from '@/src/react/ui/chart-data';\nimport { validateChartItems } from '@/src/react/ui/chart-data';\n\n/** Ordered, equally spaced samples; negative values share an explicit zero baseline. */\nexport function TrendChart({\n items,\n unit,\n ariaLabel,\n formatValue = value => new Intl.NumberFormat().format(value),\n area = false,\n}: ValueChartProps & { area?: boolean }) {\n validateChartItems(area ? 'area' : 'line', items);\n const Plot = area ? RechartsAreaChart : RechartsLineChart;\n const [activeIndex, setActiveIndex] = useState<number>();\n const scrollport = useRef<HTMLDivElement>(null);\n useLayoutEffect(() => {\n const element = scrollport.current;\n if (element) element.scrollLeft = element.scrollWidth - element.clientWidth;\n }, [items]);\n const magnitude = items.reduce(\n (max, item) => Math.max(max, Math.abs(item.value)),\n 1\n );\n const low = items.reduce(\n (min, item) => Math.min(min, item.value / magnitude),\n 0\n );\n const high = items.reduce(\n (max, item) => Math.max(max, item.value / magnitude),\n 0\n );\n return (\n <section className=\"altertable-trend-chart\" aria-label={ariaLabel}>\n {items.length === 0 && <span>No data</span>}\n {items.length > 0 && (\n <>\n <div className=\"altertable-trend-scroll\" ref={scrollport}>\n <div\n className=\"altertable-trend-plot\"\n style={{ minWidth: items.length * 40 }}\n >\n <div className=\"altertable-chart-canvas\" aria-hidden=\"true\">\n <Plot\n data={items.map(item => ({\n ...item,\n plotValue: item.value / magnitude,\n }))}\n title={ariaLabel}\n responsive\n width=\"100%\"\n height={220}\n margin={{ top: 12, right: 0, bottom: 12, left: 0 }}\n accessibilityLayer={false}\n tabIndex={-1}\n >\n <ChartXAxis hide dataKey=\"id\" scale=\"band\" />\n <ChartYAxis\n hide\n domain={[low, high === low ? low + 1 : high]}\n />\n <ReferenceLine y={0} stroke=\"var(--atbl-border)\" />\n {area && (\n <ChartArea\n dataKey=\"plotValue\"\n stroke=\"none\"\n fill=\"var(--atbl-accent)\"\n dot={false}\n activeDot={false}\n />\n )}\n <ChartLine\n dataKey=\"plotValue\"\n dot={({ cx, cy, index }) => (\n <ChartDot\n cx={cx}\n cy={cy}\n active={index === activeIndex}\n />\n )}\n activeDot={false}\n />\n </Plot>\n </div>\n <div className=\"altertable-trend-points\">\n {items.map((item, index) => (\n <Tooltip\n key={item.id}\n variant=\"chart\"\n onOpenChange={open =>\n setActiveIndex(current =>\n open ? index : current === index ? undefined : current\n )\n }\n content={\n <>\n <strong>{item.label}</strong>\n <span>\n {formatValue(item.value)} {unit}\n </span>\n </>\n }\n className=\"altertable-chart-column\"\n >\n <button\n data-atbl-focus=\"ring\"\n data-atbl-control=\"default\"\n type=\"button\"\n tabIndex={-1}\n className=\"altertable-trend-point\"\n aria-label={`${item.label}: ${formatValue(item.value)} ${unit}`}\n >\n <span className=\"altertable-trend-hit\" />\n <span className=\"altertable-trend-label\">\n {item.label}\n </span>\n </button>\n </Tooltip>\n ))}\n </div>\n </div>\n </div>\n </>\n )}\n </section>\n );\n}\n",
12
+ "import type { ComponentProps } from 'react';\nimport {\n Area,\n Dot,\n type DotProps,\n Bar,\n Line,\n Scatter,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n DefaultTooltipContent,\n type BarProps,\n type LineProps,\n type AreaProps,\n} from 'recharts';\nimport { ChartLegend } from '@/src/react/ui/ChartLegend';\nimport { TooltipSurface } from '@/src/react/ui/TooltipSurface';\n\nimport { chartBarFill } from '@/src/react/ui/chartColor';\nconst accent = 'var(--atbl-accent)';\n/** Hollow sample marker shared by standalone and composed series. */\nexport function ChartDot({\n active = false,\n stroke = accent,\n fill = active ? stroke : 'var(--atbl-surface)',\n r = active ? 4.5 : 3,\n ...props\n}: DotProps & { active?: boolean }) {\n return <Dot stroke={stroke} fill={fill} r={r} strokeWidth={2} {...props} />;\n}\n\n/** Shared series defaults; native props override every authored choice. */\nexport function ChartBar<Row = unknown, Value = number | null>(\n props: BarProps<Row, Value>\n) {\n return (\n <Bar<Row, Value>\n fill={chartBarFill}\n radius={[5, 5, 0, 0]}\n maxBarSize={30}\n activeBar={{ fill: accent }}\n isAnimationActive={false}\n {...props}\n />\n );\n}\n\n/** Themed hollow sample dots are enabled by default; dot=false hides them.\n * activeDot independently controls the hovered point. Native dot props and renderers remain available. */\nexport function ChartLine<Row = unknown, Value = number | null>({\n stroke = accent,\n dot,\n activeDot,\n ...props\n}: LineProps<Row, Value>) {\n return (\n <Line<Row, Value>\n type=\"linear\"\n stroke={stroke}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n dot={\n dot === undefined || dot === true\n ? ({ cx, cy }) => <ChartDot cx={cx} cy={cy} stroke={stroke} />\n : dot\n }\n activeDot={\n activeDot === undefined || activeDot === true\n ? ({ cx, cy }) => <ChartDot cx={cx} cy={cy} stroke={stroke} active />\n : activeDot\n }\n isAnimationActive={false}\n {...props}\n />\n );\n}\n\n/** Filled series with the same sample-dot and activeDot options as ChartLine. */\nexport function ChartArea<Row = unknown, Value = number | null>({\n stroke = accent,\n dot,\n activeDot,\n ...props\n}: AreaProps<Row, Value>) {\n return (\n <Area<Row, Value>\n legendType=\"square\"\n type=\"linear\"\n stroke={stroke}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill={stroke}\n fillOpacity={0.14}\n dot={\n dot === undefined || dot === true\n ? ({ cx, cy }) => <ChartDot cx={cx} cy={cy} stroke={stroke} />\n : dot\n }\n activeDot={\n activeDot === undefined || activeDot === true\n ? ({ cx, cy }) => <ChartDot cx={cx} cy={cy} stroke={stroke} active />\n : activeDot\n }\n isAnimationActive={false}\n {...props}\n />\n );\n}\n\nexport function ChartScatter<Row = unknown, Value = number>(\n props: ComponentProps<typeof Scatter<Row, Value>>\n) {\n return (\n <Scatter<Row, Value> fill={accent} isAnimationActive={false} {...props} />\n );\n}\n\nexport function ChartXAxis<Row = unknown, Value = string | number>(\n props: ComponentProps<typeof XAxis<Row, Value>>\n) {\n return (\n <XAxis<Row, Value>\n stroke=\"var(--atbl-muted)\"\n tickLine={false}\n axisLine={{ stroke: 'var(--atbl-border)' }}\n tick={{ fontSize: 'var(--atbl-type-meta-size)' }}\n {...props}\n />\n );\n}\n\nexport function ChartYAxis<Row = unknown, Value = number>(\n props: ComponentProps<typeof YAxis<Row, Value>>\n) {\n return (\n <YAxis<Row, Value>\n stroke=\"var(--atbl-muted)\"\n tickLine={false}\n axisLine={false}\n tick={{ fontSize: 'var(--atbl-type-meta-size)' }}\n {...props}\n />\n );\n}\n\nexport function ChartGrid(props: ComponentProps<typeof CartesianGrid>) {\n return (\n <CartesianGrid stroke=\"var(--atbl-border)\" vertical={false} {...props} />\n );\n}\n\nexport function ChartTooltipContent(\n props: ComponentProps<typeof DefaultTooltipContent> & { active?: boolean }\n) {\n if (!props.active) return null;\n return (\n <TooltipSurface data-variant=\"chart\" role=\"tooltip\">\n <DefaultTooltipContent\n {...props}\n separator=\"\"\n payload={props.payload?.map(entry => ({\n ...entry,\n unit: undefined,\n formatter: (value, name, _item, index, payload) => {\n const formatter = entry.formatter ?? props.formatter;\n const formatted = formatter\n ? formatter(value, name, entry, index, props.payload ?? payload)\n : Array.isArray(value)\n ? value.join(' ~ ')\n : value;\n if (formatted == null) return null;\n const [displayValue, displayName] = Array.isArray(formatted)\n ? formatted\n : [formatted, name];\n return [\n <span\n key={entry.graphicalItemId}\n className=\"altertable-chart-tooltip-row\"\n >\n <ChartLegend.Marker\n kind=\"square\"\n className=\"altertable-chart-tooltip-marker\"\n color={\n entry.color ??\n entry.stroke ??\n entry.fill ??\n 'var(--atbl-accent)'\n }\n />\n <span className=\"altertable-chart-tooltip-reading\">\n {displayName}\n {displayName !== undefined && displayName !== ''\n ? (props.separator ?? ' : ')\n : ''}\n {displayValue}\n {entry.unit}\n </span>\n </span>,\n '',\n ];\n },\n }))}\n contentStyle={{\n margin: 0,\n padding: 0,\n background: 'transparent',\n border: 0,\n whiteSpace: 'normal',\n ...props.contentStyle,\n }}\n labelStyle={{\n color: 'var(--atbl-text)',\n fontSize: 'var(--atbl-type-body-size)',\n fontWeight: 650,\n lineHeight: 1.2,\n ...props.labelStyle,\n }}\n itemStyle={{\n color: 'var(--atbl-text)',\n paddingTop: 2,\n paddingBottom: 0,\n ...props.itemStyle,\n }}\n />\n </TooltipSurface>\n );\n}\n\n/** Uses the same surface as single-series inspection; Recharts owns interaction. */\nexport function ChartTooltip(props: ComponentProps<typeof Tooltip>) {\n return (\n <Tooltip\n content={<ChartTooltipContent />}\n cursor={false}\n isAnimationActive={false}\n {...props}\n />\n );\n}\n",
13
+ "import {\n Children,\n useId,\n useState,\n type ComponentPropsWithRef,\n type ReactNode,\n} from 'react';\nimport { classNames } from '@/src/react/ui/classNames';\nimport { chartBarFill } from '@/src/react/ui/chartColor';\n\nexport type ChartLegendProps = {\n children: ReactNode;\n layout?: 'horizontal' | 'vertical';\n align?: 'start' | 'center' | 'end';\n /** Maximum visible cells, including the expansion control; defaults to six. */\n maxVisibleItems?: number;\n} & Omit<ComponentPropsWithRef<'ul'>, 'children'>;\n\n/** Optional chart key, placed beside any chart with the app's layout components.\n * Items describe displayed series or categories; the caller owns series visibility and interactions. */\nfunction ChartLegendRoot({\n children,\n layout = 'horizontal',\n align = 'start',\n maxVisibleItems = 6,\n className,\n 'aria-label': ariaLabel = 'Chart legend',\n ...props\n}: ChartLegendProps) {\n const [expanded, setExpanded] = useState(false);\n const listId = useId();\n const items = Children.toArray(children);\n const limit = Number.isFinite(maxVisibleItems)\n ? Math.max(1, Math.floor(maxVisibleItems))\n : 6;\n const visibleCount = items.length > limit ? limit - 1 : limit;\n const hiddenCount = Math.max(0, items.length - visibleCount);\n return (\n <div className=\"altertable-chart-legend-container\">\n <ul\n id={listId}\n {...props}\n aria-label={ariaLabel}\n data-layout={layout}\n data-align={align}\n className={classNames('altertable-chart-legend', className)}\n >\n {expanded ? items : items.slice(0, visibleCount)}\n {hiddenCount > 0 && (\n <li className=\"altertable-chart-legend-overflow\">\n <button\n type=\"button\"\n data-atbl-control=\"action\"\n data-atbl-focus=\"ring\"\n className=\"altertable-chart-legend-action\"\n aria-expanded={expanded}\n aria-controls={props.id ?? listId}\n onClick={() => setExpanded(value => !value)}\n >\n {expanded ? 'Show fewer' : `+${hiddenCount} more`}\n </button>\n </li>\n )}\n </ul>\n </div>\n );\n}\n\nexport type ChartLegendItemProps = ComponentPropsWithRef<'li'> & {\n inactive?: boolean;\n};\n\n/** Descriptive by default; compose a button inside the item for an authored series toggle. */\nfunction ChartLegendItem({\n inactive,\n className,\n ...props\n}: ChartLegendItemProps) {\n return (\n <li\n {...props}\n data-inactive={inactive || undefined}\n className={classNames('altertable-chart-legend-item', className)}\n />\n );\n}\n\nexport type ChartLegendMarkerKind =\n | 'square'\n | 'bar'\n | 'line'\n | 'area'\n | 'point'\n | 'slice';\nexport type ChartLegendMarkerProps = Omit<\n ComponentPropsWithRef<'svg'>,\n 'children'\n> & {\n kind: ChartLegendMarkerKind;\n};\n\n/** Decorative mark; color accepts public palette tokens or any CSS color.\n * Defaults match the shared bar or accent-colored series primitives. */\nfunction ChartLegendMarker({\n kind,\n color = kind === 'bar' ? chartBarFill : 'var(--atbl-accent)',\n className,\n style,\n ...props\n}: ChartLegendMarkerProps) {\n return (\n <svg\n {...props}\n aria-hidden=\"true\"\n focusable=\"false\"\n viewBox={kind === 'square' ? '0 0 8 8' : '0 0 20 12'}\n data-kind={kind}\n className={classNames('altertable-chart-legend-marker', className)}\n style={{ color, ...style }}\n >\n {kind === 'square' && <rect width=\"8\" height=\"8\" fill=\"currentColor\" />}\n {kind === 'bar' && (\n <path d=\"M6 11V3Q6 1 8 1H12Q14 1 14 3V11Z\" fill=\"currentColor\" />\n )}\n {kind === 'slice' && (\n <rect x=\"5\" y=\"1\" width=\"10\" height=\"10\" rx=\"2\" fill=\"currentColor\" />\n )}\n {kind === 'point' && <circle cx=\"10\" cy=\"6\" r=\"3\" fill=\"currentColor\" />}\n {kind === 'line' && (\n <>\n <path\n d=\"M1 6H19\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n <circle\n cx=\"10\"\n cy=\"6\"\n r=\"2.5\"\n fill=\"var(--atbl-surface)\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n </>\n )}\n {kind === 'area' && (\n <>\n <path\n d=\"M1 10L7 5L13 7L19 2V11H1Z\"\n fill=\"currentColor\"\n fillOpacity=\"0.14\"\n />\n <path\n d=\"M1 10L7 5L13 7L19 2\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinejoin=\"round\"\n strokeLinecap=\"round\"\n />\n </>\n )}\n </svg>\n );\n}\n\nexport type ChartLegendLabelProps = ComponentPropsWithRef<'span'>;\nfunction ChartLegendLabel({\n className,\n children,\n title,\n ...props\n}: ChartLegendLabelProps) {\n return (\n <span\n {...props}\n title={title ?? (typeof children === 'string' ? children : undefined)}\n className={classNames('altertable-chart-legend-label', className)}\n >\n {children}\n </span>\n );\n}\n\nexport const ChartLegend = Object.assign(ChartLegendRoot, {\n Item: ChartLegendItem,\n Marker: ChartLegendMarker,\n Label: ChartLegendLabel,\n});\n",
14
+ "import { invariant } from '@/src/core/invariant';\n\n/** Ordered category or time-series sample. IDs are unique and nonblank; values are finite. */\nexport type ChartItem = { id: string; label: string; value: number };\nexport type ValueChartProps = {\n /** Ordered samples; the chart validates IDs and values when rendering. */\n items: readonly ChartItem[];\n unit: string;\n ariaLabel: string;\n formatValue?: (value: number) => string;\n};\n\nexport type CountChartProps = {\n /** Accessible measure and scope description. */\n ariaLabel: string;\n /** Population unit, such as users or sessions. */\n unit: string;\n /** Formats counts; rates use percentage formatting. */\n formatValue?: (value: number) => string;\n className?: string;\n};\n\n/** Independent observation on two finite numeric axes. */\nexport type ScatterChartItem = {\n id: string;\n label: string;\n x: number;\n y: number;\n};\ntype ChartKind = 'bar' | 'line' | 'area' | 'pie' | 'scatter';\ntype ItemFor<Kind extends ChartKind> = Kind extends 'scatter'\n ? ScatterChartItem\n : ChartItem;\n/** Validate standalone item-based chart inputs. */\nexport function validateChartItems<Kind extends ChartKind>(\n kind: Kind,\n items: readonly ItemFor<Kind>[]\n): void {\n const ids = new Set<string>();\n for (const item of items) {\n invariant(\n item.id.trim().length > 0,\n `${kind} chart IDs must be nonempty and unique: blank ID.`\n );\n invariant(\n !ids.has(item.id),\n `${kind} chart IDs must be nonempty and unique: duplicate \"${item.id}\".`\n );\n ids.add(item.id);\n if (kind === 'scatter') {\n const point = item as ScatterChartItem;\n invariant(\n Number.isFinite(point.x) && Number.isFinite(point.y),\n `scatter chart \"${item.id}\" requires finite values for x and y.`\n );\n } else {\n const point = item as ChartItem;\n invariant(\n Number.isFinite(point.value),\n `${kind} chart \"${item.id}\" requires finite values.`\n );\n invariant(\n (kind !== 'bar' && kind !== 'pie') || point.value >= 0,\n `${kind} chart \"${item.id}\" requires nonnegative values.`\n );\n }\n }\n}\n",
13
15
  "import type { ChartItem, ValueChartProps } from '@/src/react/ui/chart-data';\nimport { TrendChart } from '@/src/react/ui/TrendChart';\n\nexport type LineChartItem = ChartItem;\nexport type LineChartProps = ValueChartProps;\n\n/** Equally spaced finite samples in supplied order; fill missing periods explicitly.\n * Supports negative values, single points, and horizontal scrolling for long series.\n * Compose inside VisualizationWidget; hover/touch tooltips need no caller state. */\nexport function LineChart(props: LineChartProps) {\n return <TrendChart {...props} />;\n}\n",
14
16
  "import type { ChartItem, ValueChartProps } from '@/src/react/ui/chart-data';\nimport { TrendChart } from '@/src/react/ui/TrendChart';\n\nexport type AreaChartItem = ChartItem;\nexport type AreaChartProps = ValueChartProps;\n\n/** Ordered finite samples filled to a zero baseline, including negative values.\n * Samples are equally spaced; supply missing periods explicitly.\n * Compose inside VisualizationWidget; hover/touch tooltips need no caller state. */\nexport function AreaChart(props: AreaChartProps) {\n return <TrendChart {...props} area />;\n}\n",
15
- "import { Tooltip } from '@/src/react/ui/Tooltip';\nimport { useState } from 'react';\nimport type { ChartItem, ValueChartProps } from '@/src/react/ui/chart-data';\nimport { validateChartItems } from '@/src/react/ui/chart-data';\n\nexport type PieChartItem = ChartItem;\nexport type PieChartProps = ValueChartProps;\n\n/** Nonnegative, mutually exclusive parts; shares use the sum of supplied items.\n * Include Other to represent the whole. Zero values remain in the legend; all-zero\n * data shows an empty circle. Colors follow item order. Compose inside VisualizationWidget;\n * hover/touch tooltips coordinate slice and legend emphasis without caller state. */\nexport function PieChart({\n items,\n unit,\n ariaLabel,\n formatValue = value => new Intl.NumberFormat().format(value),\n}: PieChartProps) {\n validateChartItems('pie', items);\n const [previewId, setPreviewId] = useState<string | null>(null);\n const [plotOpen, setPlotOpen] = useState(false);\n const [legendId, setLegendId] = useState<string | null>(null);\n const maximum = items.reduce((max, item) => Math.max(max, item.value), 0);\n const total = maximum\n ? items.reduce((sum, item) => sum + item.value / maximum, 0)\n : 0;\n let cursor = -Math.PI / 2;\n const slices: (PieChartItem & {\n share: number;\n color: string;\n path: string;\n })[] = [];\n for (const [index, item] of items.entries()) {\n const share = total ? item.value / maximum / total : 0;\n const start = cursor;\n cursor += share * Math.PI * 2;\n const middle = (start + cursor) / 2;\n function point(angle: number) {\n return `${110 + Math.cos(angle) * 100},${110 + Math.sin(angle) * 100}`;\n }\n slices.push({\n ...item,\n share,\n color: `var(--atbl-chart-${(index % 8) + 1})`,\n path: `${share === 1 ? 'M' : 'M110,110 L'}${point(start)} A100,100 0 0 1 ${point(middle)} A100,100 0 0 1 ${point(cursor)} Z`,\n });\n }\n function percent(share: number) {\n return new Intl.NumberFormat('en-US', {\n style: 'percent',\n maximumFractionDigits: 1,\n }).format(share);\n }\n function detail(item: (typeof slices)[number]) {\n return (\n <>\n <strong>{item.label}</strong>\n <span>\n {formatValue(item.value)} {unit} · {percent(item.share)}\n </span>\n </>\n );\n }\n const preview = slices.find(item => item.id === previewId);\n return (\n <section className=\"altertable-pie-chart\" aria-label={ariaLabel}>\n {items.length === 0 && <span>No data</span>}\n {items.length > 0 && (\n <>\n <div className=\"altertable-pie-plot\">\n <Tooltip\n variant=\"chart\"\n className=\"altertable-pie-tooltip\"\n onOpenChange={setPlotOpen}\n content={preview ? detail(preview) : null}\n >\n <svg viewBox=\"0 0 220 220\" aria-hidden=\"true\" focusable=\"false\">\n {total === 0 ? (\n <circle\n cx=\"110\"\n cy=\"110\"\n r=\"100\"\n className=\"altertable-pie-empty\"\n />\n ) : (\n slices\n .filter(item => item.share > 0)\n .map(item => (\n <path\n key={item.id}\n d={item.path}\n fill={item.color}\n className=\"altertable-pie-slice\"\n data-active={\n item.id ===\n (plotOpen && previewId ? previewId : legendId) ||\n undefined\n }\n onPointerDown={event => {\n if (plotOpen && previewId !== item.id)\n event.preventDefault();\n setPreviewId(item.id);\n }}\n onPointerEnter={event => {\n if (event.pointerType === 'mouse')\n setPreviewId(item.id);\n }}\n onPointerLeave={event => {\n if (event.pointerType === 'mouse') setPreviewId(null);\n }}\n />\n ))\n )}\n </svg>\n </Tooltip>\n {total === 0 && (\n <span className=\"altertable-pie-empty-label\">\n No nonzero values\n </span>\n )}\n </div>\n <div className=\"altertable-pie-legend\">\n {slices.map(item => (\n <Tooltip\n key={item.id}\n variant=\"chart\"\n content={detail(item)}\n onOpenChange={open =>\n setLegendId(current =>\n open ? item.id : current === item.id ? null : current\n )\n }\n >\n <button\n data-atbl-focus=\"ring\"\n data-atbl-control=\"action\"\n type=\"button\"\n tabIndex={-1}\n aria-label={`${item.label}: ${formatValue(item.value)} ${unit}, ${percent(item.share)}`}\n >\n <span\n className=\"altertable-pie-key\"\n style={{ background: item.color }}\n />\n <span className=\"altertable-pie-label\">{item.label}</span>\n <strong>{formatValue(item.value)}</strong>\n <span>{percent(item.share)}</span>\n </button>\n </Tooltip>\n ))}\n </div>\n </>\n )}\n </section>\n );\n}\n",
16
- "import { Tooltip } from '@/src/react/ui/Tooltip';\n\nimport { validateChartItems } from '@/src/react/ui/chart-data';\n\nimport type { ScatterChartItem } from '@/src/react/ui/chart-data';\nexport type { ScatterChartItem } from '@/src/react/ui/chart-data';\nexport type ScatterChartProps = {\n items: readonly ScatterChartItem[];\n xLabel: string;\n yLabel: string;\n xUnit: string;\n yUnit: string;\n ariaLabel: string;\n formatX?: (value: number) => string;\n formatY?: (value: number) => string;\n};\n\nfunction formatNumber(value: number) {\n return new Intl.NumberFormat(undefined, { maximumFractionDigits: 1 }).format(\n value\n );\n}\n\nfunction scale(values: readonly number[]) {\n const magnitude = values.reduce(\n (max, value) => Math.max(max, Math.abs(value)),\n 1\n );\n const low = values.reduce(\n (min, value) => Math.min(min, value / magnitude),\n 0\n );\n const high =\n values.reduce((max, value) => Math.max(max, value / magnitude), 0) ||\n (low === 0 ? 1 : 0);\n const span = high - low;\n return {\n position(value: number) {\n return ((value / magnitude - low) / span) * 100;\n },\n ticks: [low, low + span / 2, high].map(value => value * magnitude),\n };\n}\n\n/** Independent finite X/Y observations on linear axes that include zero.\n * Negative and constant coordinates are supported. Axis labels and units describe\n * tooltips as well as the plot; formatX/formatY format ticks and tooltip values.\n * Compose inside VisualizationWidget; hover/touch tooltips need no caller state. */\nexport function ScatterChart({\n items,\n xLabel,\n yLabel,\n xUnit,\n yUnit,\n ariaLabel,\n formatX = formatNumber,\n formatY = formatNumber,\n}: ScatterChartProps) {\n validateChartItems('scatter', items);\n const xScale = scale(items.map(item => item.x));\n const yScale = scale(items.map(item => item.y));\n return (\n <section className=\"altertable-scatter-chart\" aria-label={ariaLabel}>\n {items.length === 0 && <span>No data</span>}\n {items.length > 0 && (\n <>\n <p className=\"altertable-scatter-axis-title\">\n {yLabel}\n {yUnit && ` (${yUnit})`}\n </p>\n <div className=\"altertable-scatter-axes\">\n <div className=\"altertable-scatter-plot\">\n {yScale.ticks.map((value, index) => (\n <div\n key={index}\n className=\"altertable-scatter-gridline\"\n style={{ bottom: `${index * 50}%` }}\n aria-hidden=\"true\"\n >\n <span title={formatY(value)}>{formatY(value)}</span>\n </div>\n ))}\n {xScale.ticks.map((value, index) => (\n <span\n key={index}\n className=\"altertable-scatter-x-tick\"\n data-edge={index}\n style={{ left: `${index * 50}%` }}\n aria-hidden=\"true\"\n title={formatX(value)}\n >\n {formatX(value)}\n </span>\n ))}\n {items.map(item => (\n <Tooltip\n key={item.id}\n variant=\"chart\"\n content={\n <>\n <strong>{item.label}</strong>\n <span>\n {xLabel}: {formatX(item.x)} {xUnit}\n </span>\n <span>\n {yLabel}: {formatY(item.y)} {yUnit}\n </span>\n </>\n }\n className=\"altertable-scatter-tooltip\"\n style={{\n left: `${xScale.position(item.x)}%`,\n bottom: `${yScale.position(item.y)}%`,\n }}\n >\n <button\n data-atbl-focus=\"ring\"\n data-atbl-control=\"action\"\n type=\"button\"\n tabIndex={-1}\n className=\"altertable-scatter-point\"\n aria-label={`${item.label}: ${xLabel} ${formatX(item.x)} ${xUnit}, ${yLabel} ${formatY(item.y)} ${yUnit}`}\n >\n <span />\n </button>\n </Tooltip>\n ))}\n </div>\n </div>\n <p className=\"altertable-scatter-axis-title altertable-scatter-x-title\">\n {xLabel}\n {xUnit && ` (${xUnit})`}\n </p>\n </>\n )}\n </section>\n );\n}\n",
17
- "import { Tooltip } from '@/src/react/ui/Tooltip';\nimport { useLayoutEffect, useRef } from 'react';\n\nimport {\n validateChartItems,\n type ChartItem,\n type ValueChartProps,\n} from '@/src/react/ui/chart-data';\n\nexport type BarChartItem = ChartItem;\n\nexport type BarChartProps = ValueChartProps;\n\n/** Nonnegative category values. Compose inside VisualizationWidget for a titled panel.\n * Owns hover/touch tooltips; no selection state or keyboard navigation. */\nexport function BarChart({\n items,\n unit,\n ariaLabel,\n formatValue = value => new Intl.NumberFormat().format(value),\n}: BarChartProps) {\n validateChartItems('bar', items);\n const scrollport = useRef<HTMLDivElement>(null);\n\n useLayoutEffect(() => {\n const element = scrollport.current;\n if (element) element.scrollLeft = element.scrollWidth - element.clientWidth;\n }, [items]);\n\n const maximum = items.reduce((max, item) => Math.max(max, item.value), 1);\n\n return (\n <section className=\"altertable-selectable-bars\" aria-label={ariaLabel}>\n {items.length === 0 && <span>No data</span>}\n <div className=\"altertable-selectable-bars-scroll\" ref={scrollport}>\n {items.map(item => (\n <Tooltip\n key={item.id}\n variant=\"chart\"\n content={\n <>\n <strong>{item.label}</strong>\n <span>\n {formatValue(item.value)} {unit}\n </span>\n </>\n }\n className=\"altertable-chart-column\"\n >\n <button\n data-atbl-focus=\"ring\"\n data-atbl-control=\"action\"\n type=\"button\"\n tabIndex={-1}\n className=\"altertable-selectable-bars-item\"\n aria-label={`${item.label}: ${formatValue(item.value)} ${unit}`}\n >\n <span className=\"altertable-selectable-bars-area\">\n <span\n className=\"altertable-selectable-bars-bar\"\n style={{\n height: `${Math.max(item.value > 0 ? 3 : 0, (item.value / maximum) * 100)}%`,\n }}\n />\n </span>\n <span className=\"altertable-selectable-bars-label\">\n {item.label}\n </span>\n </button>\n </Tooltip>\n ))}\n </div>\n </section>\n );\n}\n"
17
+ "import { ChartLegend } from '@/src/react/ui/ChartLegend';\nimport { Tooltip } from '@/src/react/ui/Tooltip';\nimport { useState } from 'react';\nimport type { ChartItem, ValueChartProps } from '@/src/react/ui/chart-data';\nimport { validateChartItems } from '@/src/react/ui/chart-data';\n\nexport type PieChartItem = ChartItem;\nexport type PieChartProps = ValueChartProps & {\n /** Omit the built-in key when composing a separate ChartLegend. */\n showLegend?: boolean;\n};\n\n/** Nonnegative, mutually exclusive parts; shares use the sum of supplied items.\n * Include Other to represent the whole. Zero values remain in the legend; all-zero\n * data shows an empty circle. Colors follow item order. Compose inside VisualizationWidget;\n * hover/touch tooltips coordinate slice and legend emphasis without caller state. */\nexport function PieChart({\n items,\n unit,\n ariaLabel,\n showLegend = true,\n formatValue = value => new Intl.NumberFormat().format(value),\n}: PieChartProps) {\n validateChartItems('pie', items);\n const [previewId, setPreviewId] = useState<string | null>(null);\n const [plotOpen, setPlotOpen] = useState(false);\n const [legendId, setLegendId] = useState<string | null>(null);\n const maximum = items.reduce((max, item) => Math.max(max, item.value), 0);\n const total = maximum\n ? items.reduce((sum, item) => sum + item.value / maximum, 0)\n : 0;\n let cursor = -Math.PI / 2;\n const slices: (PieChartItem & {\n share: number;\n color: string;\n path: string;\n })[] = [];\n for (const [index, item] of items.entries()) {\n const share = total ? item.value / maximum / total : 0;\n const start = cursor;\n cursor += share * Math.PI * 2;\n const middle = (start + cursor) / 2;\n function point(angle: number) {\n return `${110 + Math.cos(angle) * 100},${110 + Math.sin(angle) * 100}`;\n }\n slices.push({\n ...item,\n share,\n color: `var(--atbl-chart-${(index % 8) + 1})`,\n path: `${share === 1 ? 'M' : 'M110,110 L'}${point(start)} A100,100 0 0 1 ${point(middle)} A100,100 0 0 1 ${point(cursor)} Z`,\n });\n }\n function percent(share: number) {\n return new Intl.NumberFormat('en-US', {\n style: 'percent',\n maximumFractionDigits: 1,\n }).format(share);\n }\n function detail(item: (typeof slices)[number]) {\n return (\n <>\n <strong>{item.label}</strong>\n <span>\n {formatValue(item.value)} {unit} · {percent(item.share)}\n </span>\n </>\n );\n }\n const preview = slices.find(item => item.id === previewId);\n return (\n <section className=\"altertable-pie-chart\" aria-label={ariaLabel}>\n {items.length === 0 && <span>No data</span>}\n {items.length > 0 && (\n <>\n <div className=\"altertable-pie-plot\">\n <Tooltip\n variant=\"chart\"\n className=\"altertable-pie-tooltip\"\n onOpenChange={setPlotOpen}\n content={preview ? detail(preview) : null}\n >\n <svg viewBox=\"0 0 220 220\" aria-hidden=\"true\" focusable=\"false\">\n {total === 0 ? (\n <circle\n cx=\"110\"\n cy=\"110\"\n r=\"100\"\n className=\"altertable-pie-empty\"\n />\n ) : (\n slices\n .filter(item => item.share > 0)\n .map(item => (\n <path\n key={item.id}\n d={item.path}\n fill={item.color}\n className=\"altertable-pie-slice\"\n data-active={\n item.id ===\n (plotOpen && previewId\n ? previewId\n : showLegend\n ? legendId\n : null) || undefined\n }\n onPointerDown={event => {\n if (plotOpen && previewId !== item.id)\n event.preventDefault();\n setPreviewId(item.id);\n }}\n onPointerEnter={event => {\n if (event.pointerType === 'mouse')\n setPreviewId(item.id);\n }}\n onPointerLeave={event => {\n if (event.pointerType === 'mouse') setPreviewId(null);\n }}\n />\n ))\n )}\n </svg>\n </Tooltip>\n {total === 0 && (\n <span className=\"altertable-pie-empty-label\">\n No nonzero values\n </span>\n )}\n </div>\n {showLegend && (\n <ChartLegend\n layout=\"vertical\"\n aria-label={`${ariaLabel} legend`}\n className=\"altertable-pie-legend\"\n >\n {slices.map(item => (\n <ChartLegend.Item key={item.id}>\n <Tooltip\n variant=\"chart\"\n content={detail(item)}\n onOpenChange={open =>\n setLegendId(current =>\n open ? item.id : current === item.id ? null : current\n )\n }\n >\n <button\n data-atbl-focus=\"ring\"\n data-atbl-control=\"default\"\n type=\"button\"\n tabIndex={-1}\n aria-label={`${item.label}: ${formatValue(item.value)} ${unit}, ${percent(item.share)}`}\n >\n <ChartLegend.Marker kind=\"square\" color={item.color} />\n <ChartLegend.Label className=\"altertable-pie-label\">\n {item.label}\n </ChartLegend.Label>\n <strong>{formatValue(item.value)}</strong>\n <span>{percent(item.share)}</span>\n </button>\n </Tooltip>\n </ChartLegend.Item>\n ))}\n </ChartLegend>\n )}\n </>\n )}\n </section>\n );\n}\n",
18
+ "import { Tooltip } from '@/src/react/ui/Tooltip';\n\nimport { validateChartItems } from '@/src/react/ui/chart-data';\n\nimport type { ScatterChartItem } from '@/src/react/ui/chart-data';\nexport type { ScatterChartItem } from '@/src/react/ui/chart-data';\nexport type ScatterChartProps = {\n items: readonly ScatterChartItem[];\n xLabel: string;\n yLabel: string;\n xUnit: string;\n yUnit: string;\n ariaLabel: string;\n formatX?: (value: number) => string;\n formatY?: (value: number) => string;\n};\n\nfunction formatNumber(value: number) {\n return new Intl.NumberFormat(undefined, { maximumFractionDigits: 1 }).format(\n value\n );\n}\n\nfunction scale(values: readonly number[]) {\n const magnitude = values.reduce(\n (max, value) => Math.max(max, Math.abs(value)),\n 1\n );\n const low = values.reduce(\n (min, value) => Math.min(min, value / magnitude),\n 0\n );\n const high =\n values.reduce((max, value) => Math.max(max, value / magnitude), 0) ||\n (low === 0 ? 1 : 0);\n const span = high - low;\n return {\n position(value: number) {\n return ((value / magnitude - low) / span) * 100;\n },\n ticks: [low, low + span / 2, high].map(value => value * magnitude),\n };\n}\n\n/** Independent finite X/Y observations on linear axes that include zero.\n * Negative and constant coordinates are supported. Axis labels and units describe\n * tooltips as well as the plot; formatX/formatY format ticks and tooltip values.\n * Compose inside VisualizationWidget; hover/touch tooltips need no caller state. */\nexport function ScatterChart({\n items,\n xLabel,\n yLabel,\n xUnit,\n yUnit,\n ariaLabel,\n formatX = formatNumber,\n formatY = formatNumber,\n}: ScatterChartProps) {\n validateChartItems('scatter', items);\n const xScale = scale(items.map(item => item.x));\n const yScale = scale(items.map(item => item.y));\n return (\n <section className=\"altertable-scatter-chart\" aria-label={ariaLabel}>\n {items.length === 0 && <span>No data</span>}\n {items.length > 0 && (\n <>\n <p className=\"altertable-scatter-axis-title\">\n {yLabel}\n {yUnit && ` (${yUnit})`}\n </p>\n <div className=\"altertable-scatter-axes\">\n <div className=\"altertable-scatter-plot\">\n {yScale.ticks.map((value, index) => (\n <div\n key={index}\n className=\"altertable-scatter-gridline\"\n style={{ bottom: `${index * 50}%` }}\n aria-hidden=\"true\"\n >\n <span title={formatY(value)}>{formatY(value)}</span>\n </div>\n ))}\n {xScale.ticks.map((value, index) => (\n <span\n key={index}\n className=\"altertable-scatter-x-tick\"\n data-edge={index}\n style={{ left: `${index * 50}%` }}\n aria-hidden=\"true\"\n title={formatX(value)}\n >\n {formatX(value)}\n </span>\n ))}\n {items.map(item => (\n <Tooltip\n key={item.id}\n variant=\"chart\"\n content={\n <>\n <strong>{item.label}</strong>\n <span>\n {xLabel}: {formatX(item.x)} {xUnit}\n </span>\n <span>\n {yLabel}: {formatY(item.y)} {yUnit}\n </span>\n </>\n }\n className=\"altertable-scatter-tooltip\"\n style={{\n left: `${xScale.position(item.x)}%`,\n bottom: `${yScale.position(item.y)}%`,\n }}\n >\n <button\n data-atbl-focus=\"ring\"\n data-atbl-control=\"default\"\n type=\"button\"\n tabIndex={-1}\n className=\"altertable-scatter-point\"\n aria-label={`${item.label}: ${xLabel} ${formatX(item.x)} ${xUnit}, ${yLabel} ${formatY(item.y)} ${yUnit}`}\n >\n <span />\n </button>\n </Tooltip>\n ))}\n </div>\n </div>\n <p className=\"altertable-scatter-axis-title altertable-scatter-x-title\">\n {xLabel}\n {xUnit && ` (${xUnit})`}\n </p>\n </>\n )}\n </section>\n );\n}\n",
19
+ "import { chartBarFill } from '@/src/react/ui/chartColor';\nimport { Tooltip } from '@/src/react/ui/Tooltip';\nimport { useLayoutEffect, useRef, useState } from 'react';\n\nimport {\n validateChartItems,\n type ChartItem,\n type ValueChartProps,\n} from '@/src/react/ui/chart-data';\n\nimport { BarChart as RechartsBarChart, Cell } from 'recharts';\nimport {\n ChartBar,\n ChartXAxis,\n ChartYAxis,\n} from '@/src/react/ui/chart-primitives';\n\nexport type BarChartItem = ChartItem;\n\nexport type BarChartProps = ValueChartProps;\n\n/** Nonnegative category values. Compose inside VisualizationWidget for a titled panel.\n * Owns hover/touch tooltips; no selection state or keyboard navigation. */\nexport function BarChart({\n items,\n unit,\n ariaLabel,\n formatValue = value => new Intl.NumberFormat().format(value),\n}: BarChartProps) {\n validateChartItems('bar', items);\n const [activeId, setActiveId] = useState<string>();\n const scrollport = useRef<HTMLDivElement>(null);\n\n useLayoutEffect(() => {\n const element = scrollport.current;\n if (element) element.scrollLeft = element.scrollWidth - element.clientWidth;\n }, [items]);\n\n const maximum = items.reduce((max, item) => Math.max(max, item.value), 1);\n\n return (\n <section className=\"altertable-selectable-bars\" aria-label={ariaLabel}>\n {items.length === 0 && <span>No data</span>}\n <div className=\"altertable-selectable-bars-scroll\" ref={scrollport}>\n <div\n className=\"altertable-selectable-bars-plot\"\n style={{ minWidth: items.length * 45 }}\n >\n <div className=\"altertable-chart-canvas\" aria-hidden=\"true\">\n <RechartsBarChart\n data={items.map(item => ({\n ...item,\n plotValue: item.value / maximum,\n }))}\n title={ariaLabel}\n responsive\n width=\"100%\"\n height={220}\n margin={{ top: 0, right: 0, bottom: 0, left: 0 }}\n accessibilityLayer={false}\n tabIndex={-1}\n barCategoryGap=\"24%\"\n >\n <ChartXAxis hide dataKey=\"id\" scale=\"band\" />\n <ChartYAxis hide domain={[0, 1]} allowDataOverflow />\n <ChartBar\n dataKey=\"plotValue\"\n minPointSize={value => ((value ?? 0) > 0 ? 7 : 0)}\n >\n {items.map(item => (\n <Cell\n key={item.id}\n fill={\n activeId === item.id ? 'var(--atbl-accent)' : chartBarFill\n }\n />\n ))}\n </ChartBar>\n </RechartsBarChart>\n </div>\n <div className=\"altertable-selectable-bars-items\">\n {items.map(item => (\n <Tooltip\n key={item.id}\n variant=\"chart\"\n onOpenChange={open =>\n setActiveId(current =>\n open ? item.id : current === item.id ? undefined : current\n )\n }\n content={\n <>\n <strong>{item.label}</strong>\n <span>\n {formatValue(item.value)} {unit}\n </span>\n </>\n }\n className=\"altertable-chart-column\"\n >\n <button\n data-atbl-focus=\"ring\"\n data-atbl-control=\"default\"\n type=\"button\"\n tabIndex={-1}\n className=\"altertable-selectable-bars-item\"\n aria-label={`${item.label}: ${formatValue(item.value)} ${unit}`}\n >\n <span className=\"altertable-selectable-bars-area\" />\n <span className=\"altertable-selectable-bars-label\">\n {item.label}\n </span>\n </button>\n </Tooltip>\n ))}\n </div>\n </div>\n </div>\n </section>\n );\n}\n",
20
+ "import type { ComponentPropsWithRef, ReactNode } from 'react';\nimport {\n RadioGroup as AriaRadioGroup,\n Radio as AriaRadio,\n Label,\n} from 'react-aria-components';\nimport { classNames } from '@/src/react/ui/classNames';\nimport { validateChoiceOptions, type ChoiceOption } from '@/src/core/variables';\n\nexport type RadioGroupProps = Omit<\n ComponentPropsWithRef<typeof AriaRadioGroup>,\n 'className' | 'children'\n> & { children: ReactNode; label: string; className?: string };\nexport function RadioGroup({\n label,\n className,\n children,\n ...props\n}: RadioGroupProps) {\n return (\n <AriaRadioGroup\n {...props}\n className={classNames('altertable-radio-group', className)}\n >\n <Label className=\"altertable-control-label\">{label}</Label>\n {children}\n </AriaRadioGroup>\n );\n}\nexport type RadioProps = Omit<\n ComponentPropsWithRef<typeof AriaRadio>,\n 'className'\n> & { className?: string };\nexport function Radio({ className, children, ...props }: RadioProps) {\n return (\n <AriaRadio\n {...props}\n data-atbl-control=\"action\"\n data-atbl-focus=\"ring\"\n className={classNames('altertable-radio', className)}\n >\n {state => (\n <>\n <span className=\"altertable-radio-mark\" aria-hidden=\"true\" />\n {typeof children === 'function' ? children(state) : children}\n </>\n )}\n </AriaRadio>\n );\n}\nexport type SegmentedControlProps = Omit<RadioGroupProps, 'children'> & {\n options: readonly ChoiceOption[];\n};\n/** A compact radio group; arrow keys follow standard radio selection behavior. */\nexport function SegmentedControl({\n options,\n className,\n ...props\n}: SegmentedControlProps) {\n validateChoiceOptions(options);\n return (\n <RadioGroup\n {...props}\n orientation=\"horizontal\"\n className={classNames('altertable-segmented-control', className)}\n >\n <div className=\"altertable-segmented-options\">\n {options.map(option => (\n <Radio\n key={option.id}\n value={option.id}\n data-atbl-internal-surface=\"option\"\n >\n {option.label}\n </Radio>\n ))}\n </div>\n </RadioGroup>\n );\n}\n",
21
+ "import type { ComponentPropsWithRef } from 'react';\nimport { invariant } from '@/src/core/invariant';\nimport { CheckboxGroupContext } from '@/src/react/ui/Checkbox';\nimport { classNames } from '@/src/react/ui/classNames';\nexport type CheckboxGroupProps = Omit<\n ComponentPropsWithRef<'fieldset'>,\n 'onChange'\n> & {\n label: string;\n values: readonly string[];\n onChange: (values: string[]) => void;\n};\nexport function CheckboxGroup({\n label,\n values,\n onChange,\n className,\n children,\n disabled,\n ...props\n}: CheckboxGroupProps) {\n invariant(\n new Set(values).size === values.length,\n 'Checkbox group values must be unique.'\n );\n return (\n <fieldset\n {...props}\n disabled={disabled}\n className={classNames('altertable-checkbox-group', className)}\n >\n <legend>{label}</legend>\n <CheckboxGroupContext\n value={{\n values,\n disabled,\n onChange(value, checked) {\n onChange(\n checked\n ? [...values.filter(item => item !== value), value]\n : values.filter(item => item !== value)\n );\n },\n }}\n >\n {children}\n </CheckboxGroupContext>\n </fieldset>\n );\n}\n",
22
+ "import { useState, type ComponentProps } from 'react';\nimport { ComposedChartLegend as Legend } from '@/src/react/ui/ComposedChartLegend';\nimport {\n ComposedChart as RechartsComposedChart,\n ZAxis,\n ReferenceLine,\n ReferenceArea,\n ReferenceDot,\n Brush,\n Cell,\n Label,\n LabelList,\n ErrorBar,\n} from 'recharts';\n\nimport {\n ChartBar as Bar,\n ChartDot as Dot,\n ChartLine as Line,\n ChartArea as Area,\n ChartScatter as Scatter,\n ChartXAxis as XAxis,\n ChartYAxis as YAxis,\n ChartGrid as CartesianGrid,\n ChartTooltip as Tooltip,\n} from '@/src/react/ui/chart-primitives';\n\nexport type ComposedChartProps<Row = unknown> = Omit<\n ComponentProps<typeof RechartsComposedChart<Row>>,\n 'data' | 'title'\n> & {\n /** Displayed rows; series and axes select fields with Recharts dataKey props. */\n data: readonly Row[];\n /** Describes the measures and scope for assistive technology. */\n ariaLabel: string;\n};\n\n/** Compose Cartesian series inside VisualizationWidget. Defaults to responsive\n * full width and 300px height. Children retain native Recharts props and behavior,\n * including stacking, numeric/time axes, missing values, tooltips, and keyboard\n * navigation. Match yAxisId on axes and series for different units; use stackId\n * for stacks. Preserve missing measures as null and choose connectNulls deliberately.\n * Use public chart tokens for series colors. Dataset bindings own\n * loading, empty results, evidence, and CSV; this primitive owns only the plot. */\nfunction ComposedChartRoot<Row>({\n data,\n ariaLabel,\n width = '100%',\n height = 300,\n responsive = true,\n className,\n ...props\n}: ComposedChartProps<Row>) {\n const [pointerFocus, setPointerFocus] = useState(false);\n return (\n <section\n className={['altertable-composed-chart', className]\n .filter(Boolean)\n .join(' ')}\n aria-label={ariaLabel}\n data-atbl-internal-pointer-focus={pointerFocus || undefined}\n onPointerDownCapture={() => setPointerFocus(true)}\n onKeyDownCapture={() => setPointerFocus(false)}\n onBlurCapture={event => {\n if (!event.currentTarget.contains(event.relatedTarget))\n setPointerFocus(false);\n }}\n >\n <RechartsComposedChart\n data-atbl-focus=\"inset\"\n {...props}\n data={data}\n width={width}\n height={height}\n responsive={responsive}\n title={ariaLabel}\n />\n </section>\n );\n}\n\n/** Shared themed series and controls; other children retain native Recharts defaults. */\nexport const ComposedChart = Object.assign(ComposedChartRoot, {\n Dot,\n Area,\n Bar,\n Line,\n Scatter,\n XAxis,\n YAxis,\n ZAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n ReferenceLine,\n ReferenceArea,\n ReferenceDot,\n Brush,\n Cell,\n Label,\n LabelList,\n ErrorBar,\n});\n",
23
+ "import type { ComponentProps } from 'react';\nimport { Legend, type LegendPayload } from 'recharts';\nimport {\n ChartLegend,\n type ChartLegendMarkerKind,\n} from '@/src/react/ui/ChartLegend';\n\nexport type ComposedChartLegendProps = ComponentProps<typeof Legend> & {\n maxVisibleItems?: number;\n};\ntype LegendContentProps = ComposedChartLegendProps & {\n payload?: readonly LegendPayload[];\n};\n\nconst legendMarkerKinds: Partial<\n Record<NonNullable<LegendPayload['type']>, ChartLegendMarkerKind>\n> = {\n square: 'area',\n rect: 'bar',\n line: 'line',\n plainline: 'line',\n};\n\nfunction LegendContent({\n payload = [],\n maxVisibleItems,\n formatter,\n layout,\n align,\n labelStyle,\n iconType,\n iconSize = 8,\n inactiveColor = 'var(--atbl-muted)',\n position,\n verticalAlign,\n onClick,\n onMouseEnter,\n onMouseLeave,\n 'aria-label': ariaLabel,\n}: LegendContentProps) {\n if (!payload.some(entry => entry.type !== 'none')) return null;\n const vertical =\n layout === 'vertical' ||\n (layout === 'auto' && (position === 'left' || position === 'right'));\n return (\n <ChartLegend\n aria-label={ariaLabel}\n className={\n position === 'top' || (position == null && verticalAlign === 'top')\n ? 'altertable-composed-chart-legend-above'\n : position === 'bottom' ||\n (position == null && verticalAlign !== 'middle' && !vertical)\n ? 'altertable-composed-chart-legend-below'\n : undefined\n }\n maxVisibleItems={maxVisibleItems}\n layout={vertical ? 'vertical' : 'horizontal'}\n align={align === 'right' ? 'end' : align === 'left' ? 'start' : 'center'}\n >\n {payload.map((entry, index) => {\n if (entry.type === 'none') return null;\n const type = iconType ?? entry.type;\n const kind = iconType\n ? (legendMarkerKinds[type ?? 'none'] ?? 'point')\n : 'square';\n const formatLabel = entry.formatter ?? formatter;\n const label = formatLabel\n ? formatLabel(entry.value, entry, index)\n : entry.value;\n const content = (\n <>\n {type !== 'none' &&\n (entry.legendIcon ?? (\n <ChartLegend.Marker\n kind={kind}\n color={entry.inactive ? inactiveColor : entry.color}\n style={{\n width: iconSize,\n height: kind === 'square' ? iconSize : iconSize * 0.6,\n }}\n />\n ))}\n <ChartLegend.Label style={labelStyle}>{label}</ChartLegend.Label>\n </>\n );\n return (\n <ChartLegend.Item\n key={index}\n inactive={entry.inactive}\n onMouseEnter={\n onMouseEnter\n ? event => onMouseEnter(entry, index, event)\n : undefined\n }\n onMouseLeave={\n onMouseLeave\n ? event => onMouseLeave(entry, index, event)\n : undefined\n }\n >\n {onClick ? (\n <button\n type=\"button\"\n data-atbl-control=\"action\"\n data-atbl-focus=\"ring\"\n className=\"altertable-chart-legend-action\"\n onClick={event => onClick(entry, index, event)}\n >\n {content}\n </button>\n ) : (\n content\n )}\n </ChartLegend.Item>\n );\n })}\n </ChartLegend>\n );\n}\n\n/** Opt in inside ComposedChart to derive the shared legend from its displayed series.\n * Native positioning, sorting, formatters, callbacks, and custom content remain available. */\nexport function ComposedChartLegend({\n maxVisibleItems,\n ...props\n}: ComposedChartLegendProps) {\n return (\n <Legend\n iconSize={8}\n inactiveColor=\"var(--atbl-muted)\"\n content={<LegendContent maxVisibleItems={maxVisibleItems} />}\n {...props}\n />\n );\n}\n",
24
+ "import { Fragment, useEffect, useRef, useState } from 'react';\nimport { invariant } from '@/src/core/invariant';\nimport { useSvgId } from '@/src/react/ui/useSvgId';\nimport { ChartLegend } from '@/src/react/ui/ChartLegend';\nimport { ComposedChart } from '@/src/react/ui/ComposedChart';\nimport { ChartTooltipContent } from '@/src/react/ui/chart-primitives';\nimport { classNames } from '@/src/react/ui/classNames';\nimport type { CountChartProps } from '@/src/react/ui/chart-data';\nimport { formatNumber, formatPercent } from '@/src/core/format';\n\n/** Ordered step with a unique, nonblank ID. */\nexport type FunnelChartStep = { id: string; label: string };\nexport type FunnelChartSeries = {\n /** Unique, nonblank population ID. */\n id: string;\n label: string;\n /** Finite, nonnegative counts aligned with steps and nonincreasing. */\n values: readonly number[];\n};\nexport type FunnelChartProps = CountChartProps & {\n steps: readonly FunnelChartStep[];\n series: readonly FunnelChartSeries[];\n};\n\n/** Conversion columns with previous-step drop-off, normalized to each series' first step.\n * Owns series highlighting and portion-specific inspection; compose inside VisualizationWidget. */\nexport function FunnelChart({\n steps,\n series,\n unit,\n ariaLabel,\n className,\n formatValue = formatNumber,\n}: FunnelChartProps) {\n const chartId = useSvgId();\n const [highlighted, setHighlighted] = useState<{\n id: string;\n conversion: boolean;\n step: number;\n } | null>(null);\n const clearTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n function cancelClear() {\n if (clearTimer.current !== null) clearTimeout(clearTimer.current);\n clearTimer.current = null;\n }\n useEffect(() => cancelClear, []);\n function highlight(id: string, conversion: boolean, step: number) {\n cancelClear();\n setHighlighted({ id, conversion, step });\n }\n function clearHighlight() {\n cancelClear();\n setHighlighted(null);\n }\n function scheduleClear() {\n cancelClear();\n clearTimer.current = setTimeout(() => setHighlighted(null), 100);\n }\n for (const [kind, items] of [\n ['funnel step', steps],\n ['funnel series', series],\n ] as const) {\n const ids = new Set<string>();\n for (const item of items) {\n invariant(\n item.id.trim().length > 0 && !ids.has(item.id),\n `${kind} chart IDs must be nonblank and unique.`\n );\n ids.add(item.id);\n }\n }\n for (const item of series) {\n invariant(\n item.values.length === steps.length,\n 'funnel chart counts must align with steps.'\n );\n item.values.forEach((value, index) => {\n invariant(\n Number.isFinite(value) && value >= 0,\n 'funnel chart counts must be finite and nonnegative.'\n );\n invariant(\n index === 0 || value <= item.values[index - 1]!,\n 'funnel chart counts must be nonincreasing.'\n );\n });\n }\n function reading(item: FunnelChartSeries, index: number) {\n const first = item.values[0] ?? 0;\n const current = item.values[index]!;\n const previous = item.values[Math.max(0, index - 1)]!;\n return {\n current,\n previous,\n dropped: previous - current,\n conversion: first > 0 ? current / first : null,\n dropOff: first > 0 ? (previous - current) / first : null,\n };\n }\n const data = steps.map((step, index) => ({\n label: step.label,\n index,\n ...Object.fromEntries(\n series.flatMap((item, seriesIndex) => {\n const value = reading(item, index);\n return [\n [`conversion${seriesIndex}`, (value.conversion ?? 0) * 100],\n [\n `drop${seriesIndex}`,\n (value.dropOff ?? (index === 0 ? 1 : 0)) * 100,\n ],\n ];\n })\n ),\n }));\n return (\n <section\n className={classNames('altertable-funnel-chart', className)}\n aria-label={ariaLabel}\n onKeyDownCapture={clearHighlight}\n >\n {steps.length === 0 || series.length === 0 ? (\n <span>No data</span>\n ) : (\n <>\n <div className=\"altertable-funnel-summary\">\n {series.map((item, index) => (\n <div key={item.id}>\n <span>\n <ChartLegend.Marker\n kind=\"square\"\n color={`var(--atbl-chart-${(index % 8) + 1})`}\n />\n {item.label}\n </span>\n <strong>\n {formatPercent(reading(item, steps.length - 1).conversion)}\n </strong>\n </div>\n ))}\n </div>\n <p className=\"altertable-analytics-note\">\n {steps[0]!.label} → {steps.at(-1)!.label}\n </p>\n <div className=\"altertable-funnel-scroll\">\n <div\n style={{\n minWidth: steps.length * Math.max(96, series.length * 40),\n }}\n >\n <ComposedChart\n data={data}\n ariaLabel={`${ariaLabel} plot`}\n height={300}\n barCategoryGap=\"4%\"\n barGap={1}\n onMouseLeave={clearHighlight}\n >\n <ComposedChart.CartesianGrid />\n <ComposedChart.XAxis dataKey=\"label\" interval={0} height={48} />\n <ComposedChart.YAxis\n domain={[0, 100]}\n width={42}\n tickFormatter={value => `${value}%`}\n />\n <defs>\n {series.map((item, index) => (\n <Fragment key={item.id}>\n <linearGradient\n id={`${chartId}-gradient-${index}`}\n x1=\"0\"\n x2=\"0\"\n y1=\"1\"\n y2=\"0\"\n >\n <stop\n offset=\"0%\"\n stopColor={`var(--atbl-chart-${(index % 8) + 1})`}\n stopOpacity={0.5}\n />\n <stop\n offset=\"100%\"\n stopColor={`var(--atbl-chart-${(index % 8) + 1})`}\n stopOpacity={0.7}\n />\n </linearGradient>\n <pattern\n id={`${chartId}-hatch-${index}`}\n patternUnits=\"userSpaceOnUse\"\n width=\"6\"\n height=\"6\"\n patternTransform=\"rotate(45)\"\n >\n <rect\n width=\"8\"\n height=\"8\"\n fill={`var(--atbl-chart-${(index % 8) + 1})`}\n fillOpacity={0.16}\n />\n <line\n x1=\"0\"\n y1=\"0\"\n x2=\"0\"\n y2=\"8\"\n stroke={`var(--atbl-chart-${(index % 8) + 1})`}\n strokeOpacity={0.4}\n strokeWidth=\"2\"\n />\n </pattern>\n </Fragment>\n ))}\n </defs>\n {series.map((item, index) => (\n <Fragment key={item.id}>\n <ComposedChart.Bar\n dataKey={`conversion${index}`}\n name={item.label}\n stackId={item.id}\n fill={`url(#${chartId}-gradient-${index})`}\n radius={0}\n maxBarSize={undefined}\n activeBar={false}\n minPointSize={0}\n opacity={\n !highlighted || highlighted.id === item.id ? 1 : 0.2\n }\n onMouseEnter={bar =>\n highlight(item.id, true, bar.payload.index)\n }\n onMouseLeave={scheduleClear}\n onClick={bar =>\n highlight(item.id, true, bar.payload.index)\n }\n />\n <ComposedChart.Bar\n dataKey={`drop${index}`}\n name={`${item.label} drop-off`}\n stackId={item.id}\n fill={`url(#${chartId}-hatch-${index})`}\n opacity={\n !highlighted || highlighted.id === item.id ? 1 : 0.2\n }\n onMouseEnter={bar =>\n highlight(item.id, false, bar.payload.index)\n }\n onMouseLeave={scheduleClear}\n onClick={bar =>\n highlight(item.id, false, bar.payload.index)\n }\n radius={0}\n maxBarSize={undefined}\n activeBar={false}\n />\n </Fragment>\n ))}\n <ComposedChart.Tooltip\n content={({ active, payload }) => {\n const index = payload?.[0]?.payload.index;\n if (!active || typeof index !== 'number') return null;\n const tooltipItems = series\n .filter(\n item =>\n !highlighted ||\n highlighted.step !== index ||\n item.id === highlighted.id\n )\n .flatMap(item => {\n const value = reading(item, index);\n const selected = highlighted?.step === index;\n const readings = selected\n ? [highlighted.conversion]\n : [true, false];\n const seriesIndex = series.indexOf(item);\n return readings.map(conversion => ({\n name: item.label,\n graphicalItemId: `${item.id}-${conversion ? 'conversion' : 'drop-off'}`,\n dataKey: `${item.id}-${conversion ? 'conversion' : 'drop-off'}`,\n color: `var(--atbl-chart-${(seriesIndex % 8) + 1})`,\n value:\n (conversion ? value.conversion : value.dropOff) ??\n 0,\n formatter: () => (\n <>\n {formatPercent(\n conversion ? value.conversion : value.dropOff\n )}{' '}\n {conversion ? 'conversion' : 'drop-off'}\n <span className=\"altertable-funnel-tooltip-detail\">\n {formatValue(\n conversion ? value.current : value.dropped\n )}{' '}\n of {formatValue(value.previous)} {unit}\n </span>\n </>\n ),\n }));\n });\n return (\n <ChartTooltipContent\n active\n label={steps[index]!.label}\n payload={tooltipItems}\n />\n );\n }}\n />\n </ComposedChart>\n </div>\n </div>\n <ul className=\"altertable-sr-only\">\n {steps.map((step, index) => (\n <li key={step.id}>\n {step.label}\n {series.map(item => {\n const value = reading(item, index);\n return (\n <span key={item.id}>\n {' '}\n · {item.label}: {formatValue(value.current)} {unit},{' '}\n {formatPercent(value.conversion)} conversion,{' '}\n {formatValue(value.dropped)} dropped off\n </span>\n );\n })}\n </li>\n ))}\n </ul>\n </>\n )}\n </section>\n );\n}\n",
25
+ "import { useId } from 'react';\n\n/** Stable React ID for SVG definitions and their URL references; safe with identifier prefixes. */\nexport function useSvgId(): string {\n const id = useId();\n return `svg-${Array.from(id, character =>\n /[a-zA-Z0-9-]/.test(character)\n ? character\n : `_${character.codePointAt(0)!.toString(16)}_`\n ).join('')}`;\n}\n",
26
+ "import { Fragment } from 'react';\nimport { invariant } from '@/src/core/invariant';\nimport { ComposedChart } from '@/src/react/ui/ComposedChart';\nimport { ChartLegend } from '@/src/react/ui/ChartLegend';\nimport { TooltipSurface } from '@/src/react/ui/TooltipSurface';\nimport { classNames } from '@/src/react/ui/classNames';\nimport type { CountChartProps } from '@/src/react/ui/chart-data';\nimport { formatNumber, formatPercent } from '@/src/core/format';\n\nexport type RetentionChartPoint = {\n /** Nonnegative integer, unique per series; uneven offsets retain their distance. */\n offset: number;\n /** Must agree across series for the same offset. */\n label: string;\n /** Observed retention fraction in [0, 1], or null for an unobserved period. */\n rate: number | null;\n /** Finite count in [0, cohortSize]; null exactly when rate is null. */\n retainedCount: number | null;\n /** Observed but still accumulating; drawn as a dotted tail. */\n incomplete?: boolean;\n};\nexport type RetentionChartSeries = {\n /** Unique, nonblank cohort or segment ID. */\n id: string;\n label: string;\n /** Finite, nonnegative starting population. */\n cohortSize: number;\n points: readonly RetentionChartPoint[];\n};\nexport type RetentionChartProps = CountChartProps & {\n series: readonly RetentionChartSeries[];\n};\n\n/** Query-defined retention curves with count inspection and dotted incomplete periods.\n * Rates are not recomputed from counts. Compose inside VisualizationWidget. */\nexport function RetentionChart({\n series,\n unit,\n ariaLabel,\n className,\n formatValue = formatNumber,\n}: RetentionChartProps) {\n const ids = new Set<string>();\n const offsets = new Map<number, string>();\n for (const item of series) {\n invariant(\n item.id.trim().length > 0 && !ids.has(item.id),\n 'retention series chart IDs must be nonblank and unique.'\n );\n ids.add(item.id);\n invariant(\n Number.isFinite(item.cohortSize) && item.cohortSize >= 0,\n 'retention chart counts must be finite and nonnegative.'\n );\n const seen = new Set<number>();\n for (const point of item.points) {\n invariant(\n Number.isSafeInteger(point.offset) &&\n point.offset >= 0 &&\n !seen.has(point.offset),\n 'retention chart offsets must be unique nonnegative integers within each series.'\n );\n seen.add(point.offset);\n invariant(\n point.rate === null ||\n (Number.isFinite(point.rate) && point.rate >= 0 && point.rate <= 1),\n 'retention chart rates must be finite fractions between 0 and 1, or null.'\n );\n invariant(\n (point.rate === null) === (point.retainedCount === null),\n 'retention chart unobserved rates and counts must both be null.'\n );\n if (point.retainedCount !== null) {\n invariant(\n Number.isFinite(point.retainedCount) && point.retainedCount >= 0,\n 'retention chart counts must be finite and nonnegative.'\n );\n invariant(\n point.retainedCount <= item.cohortSize,\n 'retention chart retained counts cannot exceed cohort size.'\n );\n }\n invariant(\n !offsets.has(point.offset) || offsets.get(point.offset) === point.label,\n 'retention chart labels must agree for the same offset.'\n );\n offsets.set(point.offset, point.label);\n }\n }\n const data: ({ offset: number; label: string } & Record<\n string,\n number | string | null\n >)[] = [...offsets]\n .sort(([a], [b]) => a - b)\n .map(([offset, label]) => ({\n offset,\n label,\n ...Object.fromEntries(\n series.flatMap((_, index) => [\n [`rate${index}`, null],\n [`tail${index}`, null],\n ])\n ),\n }));\n series.forEach((item, index) => {\n const points = [...item.points].sort((a, b) => a.offset - b.offset);\n points.forEach((point, pointIndex) => {\n const row = data.find(row => row.offset === point.offset)!;\n row[point.incomplete ? `tail${index}` : `rate${index}`] =\n point.rate === null ? null : point.rate * 100;\n if (point.incomplete && pointIndex > 0) {\n const previous = points[pointIndex - 1]!;\n data.find(row => row.offset === previous.offset)![`tail${index}`] =\n previous.rate === null ? null : previous.rate * 100;\n }\n });\n });\n return (\n <section\n className={classNames('altertable-retention-chart', className)}\n aria-label={ariaLabel}\n >\n {data.length === 0 ? (\n <span>No data</span>\n ) : (\n <>\n <ComposedChart data={data} ariaLabel={`${ariaLabel} plot`}>\n <ComposedChart.CartesianGrid />\n <ComposedChart.XAxis\n dataKey=\"offset\"\n type=\"number\"\n domain={[0, Math.max(1, ...offsets.keys())]}\n tickFormatter={value =>\n offsets.get(Number(value)) ??\n (data[0]?.label.replace(/\\d+(?:\\.\\d+)?/, String(value)) ||\n String(value))\n }\n />\n <ComposedChart.YAxis\n domain={[0, 100]}\n width={42}\n tickFormatter={value => `${value}%`}\n />\n {series.map((item, index) => (\n <Fragment key={item.id}>\n <ComposedChart.Line\n dataKey={`rate${index}`}\n name={item.label}\n stroke={`var(--atbl-chart-${(index % 8) + 1})`}\n connectNulls={false}\n />\n <ComposedChart.Line\n dataKey={`tail${index}`}\n name={item.label}\n stroke={`var(--atbl-chart-${(index % 8) + 1})`}\n strokeDasharray=\"3 3\"\n dot={false}\n activeDot={false}\n connectNulls={false}\n />\n </Fragment>\n ))}\n <ComposedChart.Tooltip\n filterNull={false}\n content={({ active, payload }) => {\n const offset = payload?.[0]?.payload.offset;\n if (!active || typeof offset !== 'number') return null;\n return (\n <TooltipSurface data-variant=\"chart\" role=\"tooltip\">\n <strong>{offsets.get(offset)}</strong>\n {series.map(item => {\n const point = item.points.find(\n point => point.offset === offset\n );\n if (!point) return null;\n return (\n <span key={item.id}>\n {item.label}:{' '}\n {point.rate === null\n ? 'Not observed'\n : `${formatPercent(point.rate)} · ${formatValue(point.retainedCount!)} / ${formatValue(item.cohortSize)} ${unit}${point.incomplete ? ' · Incomplete period' : ''}`}\n </span>\n );\n })}\n </TooltipSurface>\n );\n }}\n />\n </ComposedChart>\n <ChartLegend aria-label={`${ariaLabel} cohorts`}>\n {series.map((item, index) => (\n <ChartLegend.Item key={item.id}>\n <ChartLegend.Marker\n kind=\"square\"\n color={`var(--atbl-chart-${(index % 8) + 1})`}\n />\n <ChartLegend.Label>{item.label}</ChartLegend.Label>\n </ChartLegend.Item>\n ))}\n </ChartLegend>\n <ul className=\"altertable-sr-only\">\n {series.map(item => (\n <li key={item.id}>\n {item.label}\n {item.points.map(point => (\n <span key={point.offset}>\n {' '}\n · {point.label}:{' '}\n {point.rate === null\n ? 'Not observed'\n : `${formatPercent(point.rate)} · ${formatValue(point.retainedCount!)} / ${formatValue(item.cohortSize)} ${unit}${point.incomplete ? ' · Incomplete period' : ''}`}\n </span>\n ))}\n </li>\n ))}\n </ul>\n </>\n )}\n </section>\n );\n}\n",
27
+ "import { useLayoutEffect, useRef, useState } from 'react';\nimport { invariant } from '@/src/core/invariant';\nimport { Button } from '@/src/react/ui/Button';\nimport { classNames } from '@/src/react/ui/classNames';\nimport type { CountChartProps } from '@/src/react/ui/chart-data';\nimport { formatNumber, formatPercent } from '@/src/core/format';\nimport {\n buildJourneyFlow,\n limitJourneyFlow,\n type JourneyChartPath,\n type JourneyNode,\n} from '@/src/react/ui/journey-flow';\n\nexport type { JourneyChartPath } from '@/src/react/ui/journey-flow';\nexport type JourneyChartProps = CountChartProps & {\n /** Full paths and their population counts. Branches and outcomes are derived internally. */\n paths: readonly JourneyChartPath[];\n};\n\n/** Path exploration with two initial steps, expandable prefixes, and three events per depth.\n * Counts and flows use the Step 1 population. Compose inside VisualizationWidget. */\nexport function JourneyChart({\n paths,\n unit,\n ariaLabel,\n className,\n formatValue = formatNumber,\n}: JourneyChartProps) {\n const ids = new Set<string>();\n let total = 0;\n for (const path of paths) {\n invariant(\n path.id.trim().length > 0 && !ids.has(path.id),\n 'journey path chart IDs must be nonblank and unique.'\n );\n ids.add(path.id);\n invariant(\n Number.isFinite(path.count) && path.count >= 0,\n 'journey chart counts must be finite and nonnegative.'\n );\n total += path.count;\n invariant(\n path.steps.length > 0 &&\n path.steps.every(step => step.event.trim().length > 0),\n 'journey chart paths require nonblank events.'\n );\n }\n invariant(\n Number.isFinite(total),\n 'journey chart total count must be finite.'\n );\n // A changed displayed result starts a new exploration, including in inspection views.\n return (\n <section\n className={classNames('altertable-journey-chart', className)}\n aria-label={ariaLabel}\n >\n {paths.length === 0 ? (\n <span>No data</span>\n ) : (\n <JourneyFlow\n key={JSON.stringify(paths)}\n paths={paths}\n unit={unit}\n formatValue={formatValue}\n />\n )}\n </section>\n );\n}\n\nfunction JourneyFlow({\n paths,\n unit,\n formatValue,\n}: Pick<JourneyChartProps, 'paths' | 'unit'> & {\n formatValue: (value: number) => string;\n}) {\n const [expandedBranch, setExpandedBranch] = useState<string[]>([]);\n const [visibleEventsByDepth, setVisibleEventsByDepth] = useState<\n Record<number, number>\n >({});\n const graph = limitJourneyFlow(\n buildJourneyFlow(paths, expandedBranch),\n visibleEventsByDepth\n );\n const scrollRef = useRef<HTMLDivElement>(null);\n const pendingDepth = useRef<number | null>(null);\n const depthCount = Math.max(0, ...graph.nodes.map(node => node.depth)) + 1;\n const startingCount = graph.nodes\n .filter(node => node.depth === 0)\n .reduce((sum, node) => sum + node.count, 0);\n function percent(count: number) {\n return formatPercent(startingCount > 0 ? count / startingCount : null);\n }\n const nodeWidth = 176;\n const nodeHeight = 96;\n const barWidth = 16;\n const rowSpacing = nodeHeight + 80;\n const columnSpacing = nodeWidth + 112;\n const width = 34 + nodeWidth + (depthCount - 1) * columnSpacing;\n function columnX(depth: number) {\n return 10 + depth * columnSpacing;\n }\n useLayoutEffect(() => {\n const depth = pendingDepth.current;\n const container = scrollRef.current;\n if (depth === null || !container || depth >= depthCount) return;\n pendingDepth.current = null;\n const left = columnX(depth);\n const right = left + nodeWidth + 24;\n const nextLeft =\n left < container.scrollLeft\n ? left - 24\n : right > container.scrollLeft + container.clientWidth\n ? right - container.clientWidth\n : container.scrollLeft;\n if (nextLeft !== container.scrollLeft)\n container.scrollTo({\n left: Math.max(0, nextLeft),\n behavior: window.matchMedia('(prefers-reduced-motion: reduce)').matches\n ? 'instant'\n : 'smooth',\n });\n });\n const columns = Array.from({ length: depthCount }, (_, depth) =>\n graph.nodes\n .filter(node => node.depth === depth)\n .sort((a, b) => {\n function rank(node: JourneyNode) {\n return node.outcome === 'event'\n ? 0\n : node.outcome === 'other'\n ? 1\n : 2;\n }\n return (\n rank(a) - rank(b) || b.count - a.count || a.key.localeCompare(b.key)\n );\n })\n );\n const positions = new Map<\n string,\n { node: JourneyNode; x: number; y: number }\n >();\n columns.forEach((column, depth) => {\n const parent = columns[depth - 1]?.find(node => node.expanded);\n const parentY = parent ? positions.get(parent.key)?.y : undefined;\n const top = Math.max(\n 104,\n (parentY ?? 104) - (column.length > 1 ? rowSpacing : 0)\n );\n column.forEach((node, index) =>\n positions.set(node.key, {\n node,\n x: columnX(depth),\n y: top + index * rowSpacing,\n })\n );\n });\n const height = Math.max(\n 280,\n ...[...positions.values()].map(position => position.y + nodeHeight + 40)\n );\n const outgoingOffsets = new Map<string, number>();\n const incomingOffsets = new Map<string, number>();\n const orderedLinks = [...graph.links].sort(\n (a, b) =>\n (positions.get(a.source)?.y ?? 0) - (positions.get(b.source)?.y ?? 0) ||\n (positions.get(a.target)?.y ?? 0) - (positions.get(b.target)?.y ?? 0)\n );\n const links = orderedLinks.flatMap(link => {\n const source = positions.get(link.source);\n const target = positions.get(link.target);\n if (!source || !target || link.count <= 0 || startingCount <= 0) return [];\n const x0 = source.x + barWidth;\n const x1 = target.x;\n const mid = (x0 + x1) / 2;\n const sourceTop = source.y + (outgoingOffsets.get(link.source) ?? 0);\n const targetTop = target.y + (incomingOffsets.get(link.target) ?? 0);\n const thickness = (link.count / startingCount) * nodeHeight;\n outgoingOffsets.set(\n link.source,\n (outgoingOffsets.get(link.source) ?? 0) + thickness\n );\n incomingOffsets.set(\n link.target,\n (incomingOffsets.get(link.target) ?? 0) + thickness\n );\n return [\n {\n muted: target.node.outcome === 'end' || target.node.outcome === 'other',\n d: `M${x0},${sourceTop} C${mid},${sourceTop} ${mid},${targetTop} ${x1},${targetTop} L${x1},${targetTop + thickness} C${mid},${targetTop + thickness} ${mid},${sourceTop + thickness} ${x0},${sourceTop + thickness} Z`,\n },\n ];\n });\n return (\n <div ref={scrollRef} className=\"altertable-journey-scroll\">\n <div\n className=\"altertable-journey-plot\"\n style={{ minWidth: width, minHeight: height }}\n >\n <svg width=\"100%\" height=\"100%\" aria-hidden=\"true\" focusable=\"false\">\n <path\n d={links\n .filter(link => !link.muted)\n .map(link => link.d)\n .join(' ')}\n fill=\"color-mix(in srgb, var(--atbl-chart-5) 22%, var(--atbl-surface))\"\n />\n <path\n d={links\n .filter(link => link.muted)\n .map(link => link.d)\n .join(' ')}\n fill=\"color-mix(in srgb, var(--atbl-muted) 22%, var(--atbl-surface))\"\n />\n </svg>\n {columns.map((column, depth) => (\n <span\n key={depth}\n className=\"altertable-journey-stage\"\n style={{ left: columnX(depth) }}\n >\n {column.length > 0 &&\n column.every(\n node => node.outcome !== 'event' && node.outcome !== 'other'\n )\n ? 'Outcome'\n : `Step ${depth + 1}`}\n </span>\n ))}\n {[...positions.values()].map(({ node, x, y }) => (\n <div\n key={node.key}\n className=\"altertable-journey-node\"\n style={{\n left: x,\n top: y,\n width: nodeWidth,\n height:\n startingCount > 0\n ? (node.count / startingCount) * nodeHeight\n : 0,\n }}\n >\n <div\n className=\"altertable-journey-bar\"\n data-event={node.outcome === 'event' || undefined}\n aria-hidden=\"true\"\n style={{ width: barWidth }}\n />\n <section\n aria-label={`${node.label}, step ${node.depth + 1}, ${formatValue(node.count)} ${unit}`}\n className=\"altertable-journey-label\"\n >\n <span className=\"altertable-journey-name\" title={node.label}>\n {node.label}\n </span>\n <span>\n {formatValue(node.count)} {unit} · {percent(node.count)}\n </span>\n {node.hiddenBranchCount ? (\n <span>\n {node.hiddenBranchCount} hidden{' '}\n {node.hiddenBranchCount === 1 ? 'event' : 'events'}\n </span>\n ) : null}\n </section>\n {node.expandable && (\n <Button\n variant=\"outline\"\n size=\"icon-compact\"\n className=\"altertable-journey-expand\"\n aria-label={`${node.expanded ? 'Less' : 'More'} after ${node.label}, step ${node.depth + 1}`}\n aria-expanded={Boolean(node.expanded)}\n onClick={() => {\n pendingDepth.current = node.expanded ? null : node.depth + 1;\n setVisibleEventsByDepth(limits =>\n Object.fromEntries(\n Object.entries(limits).filter(\n ([depth]) => Number(depth) <= node.depth\n )\n )\n );\n setExpandedBranch(\n node.expanded\n ? (node.branchKeys ?? []).slice(0, -1)\n : (node.branchKeys ?? [])\n );\n }}\n >\n {node.expanded ? '−' : '›'}\n </Button>\n )}\n {node.outcome === 'other' && (\n <Button\n size=\"compact\"\n variant=\"ghost\"\n className=\"altertable-journey-more\"\n aria-label={`Show more events at step ${node.depth + 1}`}\n onClick={() =>\n setVisibleEventsByDepth(limits => ({\n ...limits,\n [node.depth]: (limits[node.depth] ?? 3) + 3,\n }))\n }\n >\n Show more events\n </Button>\n )}\n </div>\n ))}\n </div>\n </div>\n );\n}\n",
28
+ "/** Aggregated route; repeated events remain distinct by depth and prefix. */\nexport type JourneyChartPath = {\n /** Unique, nonblank path ID. */\n id: string;\n /** At least one nonblank event; null property means no property grouping. */\n steps: readonly { event: string; property: string | null }[];\n /** Finite, nonnegative population following this route. */\n count: number;\n /** True: converted; false: dropped off; null: no conversion classification. */\n converted: boolean | null;\n /** Stops at the last loaded event, without adding an outcome or expand control. */\n truncated: boolean;\n};\n\nexport type JourneyNode = {\n key: string;\n label: string;\n depth: number;\n outcome: 'event' | 'converted' | 'drop-off' | 'truncated' | 'end' | 'other';\n count: number;\n pathKeys: string[];\n branchKeys?: string[];\n expandable?: boolean;\n expanded?: boolean;\n hiddenBranchCount?: number;\n};\n\nconst journeyOutcomeLabels = {\n truncated: 'More steps',\n 'drop-off': 'Drop-off',\n converted: 'Converted',\n end: 'End of path',\n} as const;\n\nexport function journeyNodes(\n path: JourneyChartPath\n): Omit<JourneyNode, 'count' | 'pathKeys'>[] {\n const nodes: Omit<JourneyNode, 'count' | 'pathKeys'>[] = path.steps.map(\n (step, depth) => ({\n key: JSON.stringify([depth, 'event', step.event, step.property]),\n label:\n step.property === null\n ? step.event\n : `${step.event} · ${step.property}`,\n depth,\n outcome: 'event',\n })\n );\n const outcome = path.truncated\n ? 'truncated'\n : path.converted === false\n ? 'drop-off'\n : path.converted === true\n ? 'converted'\n : 'end';\n nodes.push({\n key: JSON.stringify([nodes.length, outcome]),\n label: journeyOutcomeLabels[outcome],\n depth: nodes.length,\n outcome,\n });\n return nodes;\n}\n\nexport function buildJourneyFlow(\n paths: readonly JourneyChartPath[],\n expandedBranch?: string[]\n) {\n const nodes = new Map<string, JourneyNode>();\n const links = new Map<\n string,\n {\n key: string;\n source: string;\n target: string;\n count: number;\n pathKeys: string[];\n }\n >();\n for (const path of paths) {\n const fullSequence = journeyNodes(path);\n if (path.truncated) fullSequence.pop();\n const sequence =\n expandedBranch === undefined\n ? fullSequence\n : fullSequence.flatMap((node, index) => {\n const branchKeys = fullSequence\n .slice(0, index + 1)\n .map(step => step.key);\n const parentExpanded =\n index <= 1 ||\n branchKeys\n .slice(0, index)\n .every((key, depth) => expandedBranch[depth] === key);\n if (!parentExpanded) return [];\n return [\n {\n ...node,\n key: JSON.stringify(branchKeys),\n branchKeys,\n expandable: index >= 1 && index < fullSequence.length - 1,\n expanded: branchKeys.every(\n (key, depth) => expandedBranch[depth] === key\n ),\n },\n ];\n });\n sequence.forEach((node, index) => {\n const current = nodes.get(node.key) ?? {\n ...node,\n count: 0,\n pathKeys: [],\n };\n current.count += path.count;\n if ('expandable' in node && node.expandable) current.expandable = true;\n current.pathKeys.push(path.id);\n nodes.set(node.key, current);\n const previous = sequence[index - 1];\n if (!previous) return;\n const key = JSON.stringify([previous.key, node.key]);\n const link = links.get(key) ?? {\n key,\n source: previous.key,\n target: node.key,\n count: 0,\n pathKeys: [],\n };\n link.count += path.count;\n link.pathKeys.push(path.id);\n links.set(key, link);\n });\n }\n return { nodes: [...nodes.values()], links: [...links.values()] };\n}\n\nexport function limitJourneyFlow(\n graph: ReturnType<typeof buildJourneyFlow>,\n visibleEventsByDepth: Record<number, number> = {}\n) {\n const nodes: JourneyNode[] = [];\n const replacements = new Map<string, string>();\n for (const depth of new Set(graph.nodes.map(node => node.depth))) {\n const column = graph.nodes\n .filter(node => node.depth === depth)\n .sort(\n (a, b) =>\n Number(Boolean(b.expanded)) - Number(Boolean(a.expanded)) ||\n b.count - a.count ||\n a.key.localeCompare(b.key)\n );\n const events = column.filter(node => node.outcome === 'event');\n const outcomes = column.filter(node => node.outcome !== 'event');\n const limit = visibleEventsByDepth[depth] ?? 3;\n if (events.length <= limit) {\n nodes.push(...column);\n continue;\n }\n nodes.push(...events.slice(0, limit), ...outcomes);\n const hidden = events.slice(limit);\n const key = JSON.stringify(['other', depth]);\n hidden.forEach(node => replacements.set(node.key, key));\n nodes.push({\n key,\n label: 'More events',\n depth,\n outcome: 'other',\n hiddenBranchCount: hidden.length,\n count: hidden.reduce((sum, node) => sum + node.count, 0),\n pathKeys: [...new Set(hidden.flatMap(node => node.pathKeys))],\n });\n }\n const links = new Map<string, (typeof graph.links)[number]>();\n for (const link of graph.links) {\n const source = replacements.get(link.source) ?? link.source;\n const target = replacements.get(link.target) ?? link.target;\n const key = JSON.stringify([source, target]);\n const existing = links.get(key);\n if (existing) {\n existing.count += link.count;\n existing.pathKeys.push(...link.pathKeys);\n } else {\n links.set(key, {\n ...link,\n key,\n source,\n target,\n pathKeys: [...link.pathKeys],\n });\n }\n }\n return { nodes, links: [...links.values()] };\n}\n"
18
29
  ],
19
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOO,SAAS,wBAAwB,CACtC,UAAgC,CAAC,GACf;AAAA,EAClB,OAAO,aAAa;AAAA,IAClB,MAAM;AAAA,IACN,WAAW;AAAA,IACX,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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",
20
- "debugId": "44AF1347DDC5E0E164756E2164756E21",
30
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOO,SAAS,wBAAwB,CACtC,UAAgC,CAAC,GACf;AAAA,EAClB,OAAO,aAAa;AAAA,IAClB,MAAM;AAAA,IACN,WAAW;AAAA,IACX,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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",
31
+ "debugId": "6CFD84691873BB8C64756E2164756E21",
21
32
  "names": []
22
33
  }