@graphenedata/cli 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/LICENSE.md +100 -0
  2. package/THIRD_PARTY_NOTICES.md +12 -0
  3. package/cli.ts +157 -0
  4. package/dist/cli/cli.js +43 -0
  5. package/dist/docs/data_apps/components/charts/annotations.md +673 -0
  6. package/dist/docs/data_apps/components/charts/area-chart.md +202 -0
  7. package/dist/docs/data_apps/components/charts/bar-chart.md +317 -0
  8. package/dist/docs/data_apps/components/charts/box-plot.md +190 -0
  9. package/dist/docs/data_apps/components/charts/bubble-chart.md +151 -0
  10. package/dist/docs/data_apps/components/charts/calendar-heatmap.md +112 -0
  11. package/dist/docs/data_apps/components/charts/custom-echarts.md +308 -0
  12. package/dist/docs/data_apps/components/charts/echarts-options.md +217 -0
  13. package/dist/docs/data_apps/components/charts/funnel-chart.md +106 -0
  14. package/dist/docs/data_apps/components/charts/heatmap.md +180 -0
  15. package/dist/docs/data_apps/components/charts/histogram.md +107 -0
  16. package/dist/docs/data_apps/components/charts/line-chart.md +265 -0
  17. package/dist/docs/data_apps/components/charts/mixed-type-charts.md +240 -0
  18. package/dist/docs/data_apps/components/charts/sankey-diagram.md +301 -0
  19. package/dist/docs/data_apps/components/charts/scatter-plot.md +134 -0
  20. package/dist/docs/data_apps/components/charts/sparkline.md +68 -0
  21. package/dist/docs/data_apps/components/data/big-value.md +153 -0
  22. package/dist/docs/data_apps/components/data/delta.md +89 -0
  23. package/dist/docs/data_apps/components/data/table.md +470 -0
  24. package/dist/docs/data_apps/components/data/value.md +97 -0
  25. package/dist/docs/data_apps/components/inputs/button-group.md +154 -0
  26. package/dist/docs/data_apps/components/inputs/checkbox.md +52 -0
  27. package/dist/docs/data_apps/components/inputs/date-input.md +131 -0
  28. package/dist/docs/data_apps/components/inputs/date-range.md +124 -0
  29. package/dist/docs/data_apps/components/inputs/dimension-grid.md +67 -0
  30. package/dist/docs/data_apps/components/inputs/dropdown.md +199 -0
  31. package/dist/docs/data_apps/components/inputs/index.md +3 -0
  32. package/dist/docs/data_apps/components/inputs/slider.md +126 -0
  33. package/dist/docs/data_apps/components/inputs/text-input.md +86 -0
  34. package/dist/docs/data_apps/components/maps/area-map.md +397 -0
  35. package/dist/docs/data_apps/components/maps/base-map.md +269 -0
  36. package/dist/docs/data_apps/components/maps/bubble-map.md +361 -0
  37. package/dist/docs/data_apps/components/maps/point-map.md +326 -0
  38. package/dist/docs/data_apps/components/maps/us-map.md +167 -0
  39. package/dist/docs/data_apps/components/ui/accordion.md +116 -0
  40. package/dist/docs/data_apps/components/ui/alert.md +37 -0
  41. package/dist/docs/data_apps/components/ui/big-link.md +19 -0
  42. package/dist/docs/data_apps/components/ui/details.md +58 -0
  43. package/dist/docs/data_apps/components/ui/download-data.md +41 -0
  44. package/dist/docs/data_apps/components/ui/embed.md +47 -0
  45. package/dist/docs/data_apps/components/ui/grid.md +45 -0
  46. package/dist/docs/data_apps/components/ui/image.md +61 -0
  47. package/dist/docs/data_apps/components/ui/info.md +47 -0
  48. package/dist/docs/data_apps/components/ui/last-refreshed.md +28 -0
  49. package/dist/docs/data_apps/components/ui/link-button.md +20 -0
  50. package/dist/docs/data_apps/components/ui/link.md +40 -0
  51. package/dist/docs/data_apps/components/ui/modal.md +57 -0
  52. package/dist/docs/data_apps/components/ui/note.md +32 -0
  53. package/dist/docs/data_apps/components/ui/print-format-components.md +85 -0
  54. package/dist/docs/data_apps/components/ui/tabs.md +122 -0
  55. package/dist/docs/graphene.md +129 -0
  56. package/dist/ui/app.css +332 -0
  57. package/dist/ui/assets/favicon.ico +0 -0
  58. package/dist/ui/component-utilities/autoFormatting.js +301 -0
  59. package/dist/ui/component-utilities/builtInFormats.js +482 -0
  60. package/dist/ui/component-utilities/chartContext.js +12 -0
  61. package/dist/ui/component-utilities/chartWindowDebug.js +21 -0
  62. package/dist/ui/component-utilities/checkInputs.js +95 -0
  63. package/dist/ui/component-utilities/convert.js +15 -0
  64. package/dist/ui/component-utilities/dateParsing.js +57 -0
  65. package/dist/ui/component-utilities/dropdownContext.ts +1 -0
  66. package/dist/ui/component-utilities/echarts.js +262 -0
  67. package/dist/ui/component-utilities/echartsThemes.js +453 -0
  68. package/dist/ui/component-utilities/formatTitle.js +24 -0
  69. package/dist/ui/component-utilities/formatting.js +258 -0
  70. package/dist/ui/component-utilities/getColumnExtents.js +79 -0
  71. package/dist/ui/component-utilities/getColumnSummary.js +67 -0
  72. package/dist/ui/component-utilities/getCompletedData.js +114 -0
  73. package/dist/ui/component-utilities/getDistinctCount.js +7 -0
  74. package/dist/ui/component-utilities/getDistinctValues.js +15 -0
  75. package/dist/ui/component-utilities/getSeriesConfig.js +236 -0
  76. package/dist/ui/component-utilities/getSortedData.js +7 -0
  77. package/dist/ui/component-utilities/getStackPercentages.js +43 -0
  78. package/dist/ui/component-utilities/getStackedData.js +17 -0
  79. package/dist/ui/component-utilities/getYAxisIndex.js +15 -0
  80. package/dist/ui/component-utilities/globalContexts.js +1 -0
  81. package/dist/ui/component-utilities/helpers/getCompletedData.helpers.js +119 -0
  82. package/dist/ui/component-utilities/inputUtils.ts +25 -0
  83. package/dist/ui/component-utilities/replaceNulls.js +14 -0
  84. package/dist/ui/component-utilities/tableUtils.ts +120 -0
  85. package/dist/ui/component-utilities/themeStores.ts +116 -0
  86. package/dist/ui/components/Area.svelte +174 -0
  87. package/dist/ui/components/AreaChart.svelte +150 -0
  88. package/dist/ui/components/Bar.svelte +326 -0
  89. package/dist/ui/components/BarChart.svelte +194 -0
  90. package/dist/ui/components/BigValue.svelte +69 -0
  91. package/dist/ui/components/Chart.svelte +1070 -0
  92. package/dist/ui/components/Column.svelte +172 -0
  93. package/dist/ui/components/DateRange.svelte +324 -0
  94. package/dist/ui/components/Dropdown.svelte +738 -0
  95. package/dist/ui/components/DropdownOption.svelte +21 -0
  96. package/dist/ui/components/ECharts.svelte +77 -0
  97. package/dist/ui/components/ErrorChart.svelte +54 -0
  98. package/dist/ui/components/GrapheneQuery.svelte +12 -0
  99. package/dist/ui/components/InlineDelta.svelte +150 -0
  100. package/dist/ui/components/Line.svelte +210 -0
  101. package/dist/ui/components/LineChart.svelte +178 -0
  102. package/dist/ui/components/PieChart.svelte +36 -0
  103. package/dist/ui/components/QueryLoad.svelte +82 -0
  104. package/dist/ui/components/Row.svelte +14 -0
  105. package/dist/ui/components/SortIcon.svelte +32 -0
  106. package/dist/ui/components/Table.svelte +19 -0
  107. package/dist/ui/components/TableCell.svelte +75 -0
  108. package/dist/ui/components/TableGroupRow.svelte +136 -0
  109. package/dist/ui/components/TableGroupToggle.svelte +42 -0
  110. package/dist/ui/components/TableHeader.svelte +242 -0
  111. package/dist/ui/components/TableRow.svelte +283 -0
  112. package/dist/ui/components/TableSubtotalRow.svelte +62 -0
  113. package/dist/ui/components/TableTotalRow.svelte +88 -0
  114. package/dist/ui/components/TextInput.svelte +92 -0
  115. package/dist/ui/components/_Table.svelte +516 -0
  116. package/dist/ui/internal/clientCache.ts +43 -0
  117. package/dist/ui/internal/queryEngine.ts +169 -0
  118. package/dist/ui/internal/telemetry.ts +28 -0
  119. package/dist/ui/internal/theme.ts +88 -0
  120. package/dist/ui/layout.svelte +3 -0
  121. package/dist/ui/playwright.config.ts +30 -0
  122. package/dist/ui/web.js +106 -0
  123. package/package.json +71 -0
@@ -0,0 +1,116 @@
1
+ import {getContext, setContext} from 'svelte'
2
+ import {readable, type Readable} from 'svelte/store'
3
+
4
+ type Appearance = 'light'
5
+
6
+ type Theme = {
7
+ colors: Record<string, string>
8
+ colorPalettes: Record<string, string[]>
9
+ }
10
+
11
+ type ThemeStores = {
12
+ activeAppearance: Readable<Appearance>
13
+ theme: Readable<Theme>
14
+ resolveColor: <T>(input: T) => Readable<T | string | undefined>
15
+ resolveColorsObject: (input: Record<string, unknown> | undefined) => Readable<Record<string, string | undefined> | undefined>
16
+ resolveColorPalette: (input: unknown) => Readable<string[] | undefined>
17
+ }
18
+
19
+ const THEME_CONTEXT = Symbol('GrapheneThemeStores')
20
+
21
+ const DEFAULT_PALETTE = [
22
+ '#4C78A8',
23
+ '#F58518',
24
+ '#E45756',
25
+ '#72B7B2',
26
+ '#54A24B',
27
+ '#EECA3B',
28
+ '#B279A2',
29
+ '#FF9DA6',
30
+ '#9D755D',
31
+ '#BAB0AC',
32
+ ]
33
+
34
+ const DEFAULT_THEME: Theme = {
35
+ colors: {
36
+ 'base-100': '#ffffff',
37
+ 'base-200': '#f6f6f6',
38
+ 'base-300': '#e5e7eb',
39
+ 'base-content': '#1f2937',
40
+ 'base-content-muted': '#6b7280',
41
+ primary: '#2563eb',
42
+ positive: '#16a34a',
43
+ negative: '#dc2626',
44
+ warning: '#d97706',
45
+ },
46
+ colorPalettes: {
47
+ default: DEFAULT_PALETTE,
48
+ },
49
+ }
50
+
51
+ const activeAppearance = readable<Appearance>('light')
52
+ const theme = readable<Theme>(DEFAULT_THEME)
53
+
54
+ const isReadable = <T>(value: unknown): value is Readable<T> => {
55
+ return Boolean(value && typeof value === 'object' && 'subscribe' in (value as any))
56
+ }
57
+
58
+ const normalizeColor = (value: unknown): string | undefined => {
59
+ if (value == null) return undefined
60
+ if (Array.isArray(value)) return normalizeColor(value[0])
61
+ if (typeof value !== 'string') return String(value)
62
+
63
+ let trimmed = value.trim()
64
+ if (!trimmed) return undefined
65
+ if (trimmed === 'true' || trimmed === 'false') return trimmed
66
+ if (DEFAULT_THEME.colors[trimmed]) return DEFAULT_THEME.colors[trimmed]
67
+ if (trimmed.startsWith('#') || trimmed.startsWith('rgb') || trimmed.startsWith('hsl') || trimmed.startsWith('var(')) return trimmed
68
+ if (/^[a-zA-Z0-9_-]+$/.test(trimmed)) return `var(--color-${trimmed})`
69
+ return trimmed
70
+ }
71
+
72
+ const resolveColor = <T>(input: T): Readable<T | string | undefined> => {
73
+ if (isReadable<T | string | undefined>(input)) return input
74
+ return readable(normalizeColor(input) as T | string | undefined)
75
+ }
76
+
77
+ const resolveColorsObject = (input: Record<string, unknown> | undefined): Readable<Record<string, string | undefined> | undefined> => {
78
+ if (isReadable<Record<string, string | undefined> | undefined>(input)) return input
79
+ if (!input) return readable(undefined)
80
+
81
+ let entries = Object.entries(input).map(([key, value]) => [key, normalizeColor(value)] as const)
82
+ return readable(Object.fromEntries(entries))
83
+ }
84
+
85
+ const resolveColorPalette = (input: unknown): Readable<string[] | undefined> => {
86
+ if (isReadable<string[] | undefined>(input)) return input
87
+ if (input == null) return readable(DEFAULT_PALETTE)
88
+
89
+ if (typeof input === 'string') {
90
+ let key = input.trim()
91
+ if (!key || key === 'default') return readable(DEFAULT_PALETTE)
92
+ if (DEFAULT_THEME.colorPalettes[key]) return readable(DEFAULT_THEME.colorPalettes[key])
93
+ if (key.includes(',')) {
94
+ let values = key.split(',').map(part => normalizeColor(part)).filter(Boolean) as string[]
95
+ return readable(values.length ? values : DEFAULT_PALETTE)
96
+ }
97
+ let normalized = normalizeColor(key)
98
+ return readable(normalized ? [normalized] : DEFAULT_PALETTE)
99
+ }
100
+
101
+ if (Array.isArray(input)) {
102
+ let values = input.map(item => normalizeColor(item)).filter(Boolean) as string[]
103
+ return readable(values.length ? values : DEFAULT_PALETTE)
104
+ }
105
+
106
+ return readable(DEFAULT_PALETTE)
107
+ }
108
+
109
+ export const getThemeStores = (): ThemeStores => {
110
+ let stores = getContext<ThemeStores | undefined>(THEME_CONTEXT)
111
+ if (!stores) {
112
+ stores = {activeAppearance, theme, resolveColor, resolveColorsObject, resolveColorPalette}
113
+ setContext(THEME_CONTEXT, stores)
114
+ }
115
+ return stores
116
+ }
@@ -0,0 +1,174 @@
1
+ <script>
2
+ import {beforeUpdate, getContext} from 'svelte'
3
+ import {propKey, configKey} from '../component-utilities/chartContext.js'
4
+ import getSeriesConfig from '../component-utilities/getSeriesConfig.js'
5
+ import formatTitle from '../component-utilities/formatTitle.js'
6
+ import replaceNulls from '../component-utilities/replaceNulls.js'
7
+ import getCompletedData from '../component-utilities/getCompletedData.js'
8
+ import {
9
+ formatValue,
10
+ getFormatObjectFromString,
11
+ } from '../component-utilities/formatting.js'
12
+ import {getThemeStores} from '../component-utilities/themeStores'
13
+
14
+ const {resolveColor} = getThemeStores()
15
+ const props = getContext(propKey)
16
+ const config = getContext(configKey)
17
+
18
+ export let y = undefined
19
+ const ySet = !!y
20
+ export let series = undefined
21
+ const seriesSet = !!series
22
+ export let options = undefined
23
+ export let name = undefined
24
+ export let type = 'stacked'
25
+ export let fillColor = undefined
26
+ $: fillColorStore = resolveColor(fillColor)
27
+ export let lineColor = undefined
28
+ $: lineColorStore = resolveColor(lineColor)
29
+ export let fillOpacity = undefined
30
+ export let line = true
31
+ $: line = line === 'true' || line === true
32
+ export let markers = false
33
+ $: markers = markers === 'true' || markers === true
34
+ export let markerShape = 'circle'
35
+ export let markerSize = 8
36
+ export let handleMissing = 'gap'
37
+ export let step = false
38
+ $: step = step === 'true' || step === true
39
+ export let stepPosition = 'end'
40
+ export let labels = false
41
+ $: labels = labels === 'true' || labels === true
42
+ export let labelSize = 11
43
+ export let labelPosition = 'top'
44
+ export let labelColor = undefined
45
+ $: labelColorStore = resolveColor(labelColor)
46
+ export let labelFmt = undefined
47
+ export let showAllLabels = false
48
+ export let seriesOrder = undefined
49
+ export let seriesLabelFmt = undefined
50
+
51
+ let labelFormat
52
+ let data
53
+ let x
54
+ let swapXY
55
+ let yFormat
56
+ let xType
57
+ let xMismatch
58
+ let columnSummary
59
+ let seriesConfig
60
+ let chartOverrides
61
+ let defaultLabelPosition
62
+ let resolvedY
63
+ let stackName
64
+
65
+ if (labelFmt) labelFormat = getFormatObjectFromString(labelFmt)
66
+
67
+ $: data = $props.data
68
+ $: x = $props.x
69
+ $: swapXY = $props.swapXY
70
+ $: yFormat = $props.yFormat
71
+ $: xType = $props.xType
72
+ $: xMismatch = $props.xMismatch
73
+ $: columnSummary = $props.columnSummary
74
+ $: series = seriesSet ? series : $props.series
75
+ $: resolvedY = ySet ? y : $props.y
76
+
77
+ $: {
78
+ if (!series && typeof resolvedY !== 'object') {
79
+ stackName = undefined
80
+ if (columnSummary?.[resolvedY]) name = name ?? formatTitle(resolvedY, columnSummary[resolvedY].title)
81
+ } else {
82
+ stackName = 'area'
83
+ data = getCompletedData(data, x, resolvedY, series, false, xType === 'value')
84
+ data = replaceNulls(data, resolvedY)
85
+ xType = xType === 'value' ? 'category' : xType
86
+ }
87
+ }
88
+
89
+ $: if (handleMissing === 'zero') data = replaceNulls(data, resolvedY)
90
+
91
+ const labelPositions = {above: 'top', below: 'bottom', middle: 'inside'}
92
+ const swapXYLabelPositions = {above: 'right', below: 'left', middle: 'inside'}
93
+
94
+ $: {
95
+ defaultLabelPosition = swapXY ? 'right' : 'top'
96
+ labelPosition = (swapXY ? swapXYLabelPositions[labelPosition] : labelPositions[labelPosition]) ?? defaultLabelPosition
97
+ }
98
+
99
+ $: baseConfig = {
100
+ type: 'line',
101
+ stack: stackName,
102
+ areaStyle: {color: $fillColorStore, opacity: fillOpacity},
103
+ connectNulls: handleMissing === 'connect',
104
+ lineStyle: {width: line ? 1 : 0, color: $lineColorStore},
105
+ label: {
106
+ show: labels,
107
+ formatter: (params) =>
108
+ params.value[swapXY ? 0 : 1] === 0
109
+ ? ''
110
+ : formatValue(params.value[swapXY ? 0 : 1], labelFormat ?? yFormat),
111
+ fontSize: labelSize,
112
+ color: $labelColorStore,
113
+ position: labelPosition,
114
+ padding: 3,
115
+ },
116
+ labelLayout: {hideOverlap: showAllLabels ? false : true},
117
+ emphasis: {focus: 'series'},
118
+ showSymbol: labels || markers,
119
+ symbol: markerShape,
120
+ symbolSize: labels && !markers ? 0 : markerSize,
121
+ step: step ? stepPosition : false,
122
+ }
123
+
124
+ $: seriesConfig = getSeriesConfig(
125
+ data,
126
+ x,
127
+ resolvedY,
128
+ series,
129
+ swapXY,
130
+ baseConfig,
131
+ name,
132
+ xMismatch,
133
+ columnSummary,
134
+ seriesOrder,
135
+ undefined,
136
+ undefined,
137
+ undefined,
138
+ seriesLabelFmt,
139
+ )
140
+
141
+ $: config.update((value) => {
142
+ value.series.push(...seriesConfig)
143
+ value.legend.data.push(...seriesConfig.map((entry) => entry.name.toString()))
144
+ return value
145
+ })
146
+
147
+ $: if (options) {
148
+ config.update((value) => ({...value, ...options}))
149
+ }
150
+
151
+ $: chartOverrides = {
152
+ yAxis: {boundaryGap: ['0%', '1%']},
153
+ xAxis: {boundaryGap: ['4%', '4%'], type: xType},
154
+ }
155
+
156
+ beforeUpdate(() => {
157
+ config.update((value) => {
158
+ value.tooltip = {...value.tooltip, order: 'seriesDesc'}
159
+ if (swapXY) {
160
+ value.yAxis = {...value.yAxis, ...chartOverrides.xAxis}
161
+ value.xAxis = {...value.xAxis, ...chartOverrides.yAxis}
162
+ } else {
163
+ value.yAxis[0] = {...value.yAxis[0], ...chartOverrides.yAxis}
164
+ value.xAxis = {...value.xAxis, ...chartOverrides.xAxis}
165
+ }
166
+ if (type === 'stacked100') {
167
+ if (swapXY) value.xAxis = {...value.xAxis, max: 1}
168
+ else value.yAxis[0] = {...value.yAxis[0], max: 1}
169
+ }
170
+ if (labels) value.axisPointer = {triggerEmphasis: false}
171
+ return value
172
+ })
173
+ })
174
+ </script>
@@ -0,0 +1,150 @@
1
+ <script>
2
+ import Chart from './Chart.svelte'
3
+ import Area from './Area.svelte'
4
+ import QueryLoad from './QueryLoad.svelte'
5
+ import {getThemeStores} from '../component-utilities/themeStores'
6
+
7
+ const {resolveColor, resolveColorsObject, resolveColorPalette} = getThemeStores()
8
+
9
+ export let data = undefined
10
+ export let x = undefined
11
+ export let y = undefined
12
+ export let series = undefined
13
+ export let xType = undefined
14
+ export let yLog = undefined
15
+ export let yLogBase = undefined
16
+
17
+ export let yFmt = undefined
18
+ export let xFmt = undefined
19
+
20
+ export let title = undefined
21
+ export let subtitle = undefined
22
+ export let legend = undefined
23
+ export let xAxisTitle = undefined
24
+ export let yAxisTitle = undefined
25
+ export let xGridlines = undefined
26
+ export let yGridlines = undefined
27
+ export let xAxisLabels = undefined
28
+ export let yAxisLabels = undefined
29
+ export let xBaseline = undefined
30
+ export let yBaseline = undefined
31
+ export let xTickMarks = undefined
32
+ export let yTickMarks = undefined
33
+ export let yMin = undefined
34
+ export let yMax = undefined
35
+ export let yScale = undefined
36
+ export let sort = undefined
37
+
38
+ export let line = undefined
39
+
40
+ export let fillColor = undefined
41
+ $: fillColorStore = resolveColor(fillColor)
42
+
43
+ export let lineColor = undefined
44
+ $: lineColorStore = resolveColor(lineColor)
45
+
46
+ export let fillOpacity = undefined
47
+ export let chartAreaHeight = undefined
48
+ export let markers = undefined
49
+ export let markerShape = undefined
50
+ export let markerSize = undefined
51
+ export let handleMissing = undefined
52
+ export let step = undefined
53
+ export let stepPosition = undefined
54
+
55
+ export let type = 'stacked'
56
+ let stacked100 = type === 'stacked100'
57
+
58
+ export let colorPalette = 'default'
59
+ $: colorPaletteStore = resolveColorPalette(colorPalette)
60
+
61
+ export let labels = undefined
62
+ export let labelSize = undefined
63
+ export let labelPosition = undefined
64
+
65
+ export let labelColor = undefined
66
+ $: labelColorStore = resolveColor(labelColor)
67
+
68
+ export let labelFmt = undefined
69
+ export let showAllLabels = undefined
70
+
71
+ export let echartsOptions = undefined
72
+ export let seriesOptions = undefined
73
+
74
+ export let seriesColors = undefined
75
+ $: seriesColorsStore = resolveColorsObject(seriesColors)
76
+
77
+ export let seriesOrder = undefined
78
+ export let connectGroup = undefined
79
+ export let seriesLabelFmt = undefined
80
+
81
+ export let leftPadding = undefined
82
+ export let rightPadding = undefined
83
+ export let xLabelWrap = undefined
84
+ </script>
85
+
86
+ <QueryLoad data={data} fields={[x, y, series]} let:loaded>
87
+ <Chart
88
+ data={loaded}
89
+ {x}
90
+ {y}
91
+ {xFmt}
92
+ {yFmt}
93
+ {series}
94
+ {xType}
95
+ {yLog}
96
+ {yLogBase}
97
+ {legend}
98
+ {xAxisTitle}
99
+ {yAxisTitle}
100
+ {xGridlines}
101
+ {yGridlines}
102
+ {xAxisLabels}
103
+ {yAxisLabels}
104
+ {xBaseline}
105
+ {yBaseline}
106
+ {xTickMarks}
107
+ {yTickMarks}
108
+ {yMin}
109
+ {yMax}
110
+ {yScale}
111
+ {title}
112
+ {subtitle}
113
+ chartType="Area Chart"
114
+ stackType={type}
115
+ {stacked100}
116
+ {sort}
117
+ {chartAreaHeight}
118
+ colorPalette={colorPaletteStore}
119
+ {echartsOptions}
120
+ {seriesOptions}
121
+ {connectGroup}
122
+ seriesColors={seriesColorsStore}
123
+ {leftPadding}
124
+ {rightPadding}
125
+ {xLabelWrap}
126
+ >
127
+ <Area
128
+ {line}
129
+ fillColor={fillColorStore}
130
+ lineColor={lineColorStore}
131
+ {fillOpacity}
132
+ {handleMissing}
133
+ {type}
134
+ {step}
135
+ {stepPosition}
136
+ {markers}
137
+ {markerShape}
138
+ {markerSize}
139
+ {labels}
140
+ {labelSize}
141
+ {labelPosition}
142
+ labelColor={labelColorStore}
143
+ {labelFmt}
144
+ {showAllLabels}
145
+ {seriesOrder}
146
+ {seriesLabelFmt}
147
+ />
148
+ <slot />
149
+ </Chart>
150
+ </QueryLoad>