gitextract__11r4nww/ ├── .eslintignore ├── .eslintrc.js ├── .github/ │ ├── CODEOWNERS │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── feature_request.md │ │ └── question.md │ ├── PULL_REQUEST_TEMPLATE.md │ ├── config.yml │ ├── dependabot.yml │ ├── issue_label_bot.yaml │ ├── semantic.yml │ └── workflows/ │ ├── chromatic.yml │ ├── ci.yml │ ├── codecov.sh │ └── release.yml ├── .gitignore ├── .nvmrc ├── .prettierignore ├── .rat-excludes ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── babel.config.js ├── codecov.yml ├── commitlint.config.js ├── docs/ │ ├── debugging.md │ └── storybook.md ├── jest.config.js ├── lerna.json ├── package.json ├── packages/ │ ├── generator-superset/ │ │ ├── .gitattributes │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── generators/ │ │ │ ├── app/ │ │ │ │ └── index.js │ │ │ ├── package/ │ │ │ │ ├── index.js │ │ │ │ └── templates/ │ │ │ │ ├── README.md │ │ │ │ ├── _package.json │ │ │ │ ├── src/ │ │ │ │ │ └── index.txt │ │ │ │ └── test/ │ │ │ │ └── index.txt │ │ │ └── plugin-chart/ │ │ │ ├── index.js │ │ │ └── templates/ │ │ │ ├── README.erb │ │ │ ├── package.erb │ │ │ ├── src/ │ │ │ │ ├── MyChart.erb │ │ │ │ ├── index.erb │ │ │ │ ├── plugin/ │ │ │ │ │ ├── buildQuery.erb │ │ │ │ │ ├── controlPanel.erb │ │ │ │ │ ├── index.erb │ │ │ │ │ └── transformProps.erb │ │ │ │ └── types.erb │ │ │ ├── test/ │ │ │ │ ├── index.erb │ │ │ │ └── plugin/ │ │ │ │ ├── buildQuery.test.erb │ │ │ │ └── transformProps.test.erb │ │ │ ├── tsconfig.json │ │ │ └── types/ │ │ │ └── external.d.ts │ │ ├── package.json │ │ └── test/ │ │ ├── app.test.js │ │ ├── package.test.js │ │ ├── plugin-chart.test.js │ │ └── tsconfig.json │ ├── superset-ui-chart-controls/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── components/ │ │ │ │ ├── CertifiedIconWithTooltip.tsx │ │ │ │ ├── ColumnOption.tsx │ │ │ │ ├── ColumnTypeLabel.tsx │ │ │ │ ├── ControlForm/ │ │ │ │ │ ├── ControlFormItem.tsx │ │ │ │ │ ├── controls.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── ControlHeader.tsx │ │ │ │ ├── InfoTooltipWithTrigger.tsx │ │ │ │ ├── MetricOption.tsx │ │ │ │ ├── Select.tsx │ │ │ │ └── Tooltip.tsx │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── operators/ │ │ │ │ ├── boxplotOperator.ts │ │ │ │ ├── contributionOperator.ts │ │ │ │ ├── index.ts │ │ │ │ ├── pivotOperator.ts │ │ │ │ ├── prophetOperator.ts │ │ │ │ ├── resampleOperator.ts │ │ │ │ ├── rollingWindowOperator.ts │ │ │ │ ├── sortOperator.ts │ │ │ │ ├── timeCompareOperator.ts │ │ │ │ ├── timeComparePivotOperator.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils/ │ │ │ │ ├── constants.ts │ │ │ │ ├── getMetricOffsetsMap.ts │ │ │ │ ├── index.ts │ │ │ │ └── isValidTimeCompare.ts │ │ │ ├── sections/ │ │ │ │ ├── advancedAnalytics.tsx │ │ │ │ ├── annotationsAndLayers.tsx │ │ │ │ ├── chartTitle.tsx │ │ │ │ ├── forecastInterval.tsx │ │ │ │ ├── index.ts │ │ │ │ └── sections.tsx │ │ │ ├── shared-controls/ │ │ │ │ ├── components/ │ │ │ │ │ ├── ColumnConfigControl/ │ │ │ │ │ │ ├── ColumnConfigControl.tsx │ │ │ │ │ │ ├── ColumnConfigItem.tsx │ │ │ │ │ │ ├── ColumnConfigPopover.tsx │ │ │ │ │ │ ├── constants.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── RadioButtonControl.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── types.ts │ │ │ │ ├── dndControls.tsx │ │ │ │ ├── emitFilterControl.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── legacySortBy.tsx │ │ │ ├── types.ts │ │ │ └── utils/ │ │ │ ├── D3Formatting.ts │ │ │ ├── columnChoices.ts │ │ │ ├── expandControlConfig.tsx │ │ │ ├── getColorFormatters.ts │ │ │ ├── index.ts │ │ │ ├── mainMetric.ts │ │ │ └── selectOptions.ts │ │ ├── test/ │ │ │ ├── components/ │ │ │ │ ├── ColumnOption.test.tsx │ │ │ │ ├── ColumnTypeLabel.test.tsx │ │ │ │ ├── InfoTooltipWithTrigger.test.tsx │ │ │ │ └── MetricOption.test.tsx │ │ │ ├── index.test.ts │ │ │ ├── shared-controls/ │ │ │ │ └── emitFilterControl.test.tsx │ │ │ ├── tsconfig.json │ │ │ ├── types.test.ts │ │ │ └── utils/ │ │ │ ├── columnChoices.test.tsx │ │ │ ├── expandControlConfig.test.tsx │ │ │ ├── getColorFormatters.test.ts │ │ │ ├── mainMetric.test.ts │ │ │ ├── operators/ │ │ │ │ ├── boxplotOperator.test.ts │ │ │ │ ├── contributionOperator.test.ts │ │ │ │ ├── pivotOperator.test.ts │ │ │ │ ├── prophetOperator.test.ts │ │ │ │ ├── resampleOperator.test.ts │ │ │ │ ├── rollingWindowOperator.test.ts │ │ │ │ ├── sortOperator.test.ts │ │ │ │ └── timeCompareOperator.test.ts │ │ │ └── selectOptions.test.ts │ │ └── tsconfig.json │ ├── superset-ui-core/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── chart/ │ │ │ │ ├── clients/ │ │ │ │ │ └── ChartClient.ts │ │ │ │ ├── components/ │ │ │ │ │ ├── ChartDataProvider.tsx │ │ │ │ │ ├── FallbackComponent.tsx │ │ │ │ │ ├── NoResultsComponent.tsx │ │ │ │ │ ├── SuperChart.tsx │ │ │ │ │ ├── SuperChartCore.tsx │ │ │ │ │ ├── createLoadableRenderer.ts │ │ │ │ │ └── reactify.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── models/ │ │ │ │ │ ├── ChartControlPanel.ts │ │ │ │ │ ├── ChartMetadata.ts │ │ │ │ │ ├── ChartPlugin.ts │ │ │ │ │ └── ChartProps.ts │ │ │ │ ├── registries/ │ │ │ │ │ ├── ChartBuildQueryRegistrySingleton.ts │ │ │ │ │ ├── ChartComponentRegistrySingleton.ts │ │ │ │ │ ├── ChartControlPanelRegistrySingleton.ts │ │ │ │ │ ├── ChartMetadataRegistrySingleton.ts │ │ │ │ │ └── ChartTransformPropsRegistrySingleton.ts │ │ │ │ └── types/ │ │ │ │ ├── Annotation.ts │ │ │ │ ├── Base.ts │ │ │ │ ├── QueryResponse.ts │ │ │ │ └── TransformFunction.ts │ │ │ ├── chart-composition/ │ │ │ │ ├── ChartFrame.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── legend/ │ │ │ │ │ └── WithLegend.tsx │ │ │ │ └── tooltip/ │ │ │ │ ├── TooltipFrame.tsx │ │ │ │ └── TooltipTable.tsx │ │ │ ├── color/ │ │ │ │ ├── CategoricalColorNamespace.ts │ │ │ │ ├── CategoricalColorScale.ts │ │ │ │ ├── CategoricalScheme.ts │ │ │ │ ├── CategoricalSchemeRegistrySingleton.ts │ │ │ │ ├── ColorScheme.ts │ │ │ │ ├── ColorSchemeRegistry.ts │ │ │ │ ├── SequentialScheme.ts │ │ │ │ ├── SequentialSchemeRegistrySingleton.ts │ │ │ │ ├── colorSchemes/ │ │ │ │ │ ├── categorical/ │ │ │ │ │ │ ├── airbnb.ts │ │ │ │ │ │ ├── d3.ts │ │ │ │ │ │ ├── echarts.ts │ │ │ │ │ │ ├── google.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── lyft.ts │ │ │ │ │ │ ├── preset.ts │ │ │ │ │ │ └── superset.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── sequential/ │ │ │ │ │ ├── common.ts │ │ │ │ │ ├── d3.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── stringifyAndTrim.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils.ts │ │ │ ├── components/ │ │ │ │ ├── SafeMarkdown.tsx │ │ │ │ ├── constants.ts │ │ │ │ └── index.ts │ │ │ ├── connection/ │ │ │ │ ├── README.md │ │ │ │ ├── SupersetClient.ts │ │ │ │ ├── SupersetClientClass.ts │ │ │ │ ├── callApi/ │ │ │ │ │ ├── callApi.ts │ │ │ │ │ ├── callApiAndParseWithTimeout.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parseResponse.ts │ │ │ │ │ └── rejectAfterTimeout.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── dimension/ │ │ │ │ ├── computeMaxFontSize.ts │ │ │ │ ├── getMultipleTextDimensions.ts │ │ │ │ ├── getTextDimension.ts │ │ │ │ ├── index.ts │ │ │ │ ├── mergeMargin.ts │ │ │ │ ├── parseLength.ts │ │ │ │ ├── svg/ │ │ │ │ │ ├── LazyFactory.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── createHiddenSvgNode.ts │ │ │ │ │ ├── createTextNode.ts │ │ │ │ │ ├── factories.ts │ │ │ │ │ ├── getBBoxCeil.ts │ │ │ │ │ └── updateTextNode.ts │ │ │ │ └── types.ts │ │ │ ├── dynamic-plugins/ │ │ │ │ ├── index.ts │ │ │ │ └── shared-modules.ts │ │ │ ├── index.ts │ │ │ ├── math-expression/ │ │ │ │ └── index.ts │ │ │ ├── models/ │ │ │ │ ├── ExtensibleFunction.ts │ │ │ │ ├── Plugin.ts │ │ │ │ ├── Preset.ts │ │ │ │ ├── Registry.ts │ │ │ │ ├── RegistryWithDefaultKey.ts │ │ │ │ └── index.ts │ │ │ ├── number-format/ │ │ │ │ ├── NumberFormats.ts │ │ │ │ ├── NumberFormatter.ts │ │ │ │ ├── NumberFormatterRegistry.ts │ │ │ │ ├── NumberFormatterRegistrySingleton.ts │ │ │ │ ├── README.md │ │ │ │ ├── factories/ │ │ │ │ │ ├── createD3NumberFormatter.ts │ │ │ │ │ ├── createDurationFormatter.ts │ │ │ │ │ ├── createSiAtMostNDigitFormatter.ts │ │ │ │ │ └── createSmartNumberFormatter.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── query/ │ │ │ │ ├── DatasourceKey.ts │ │ │ │ ├── README.md │ │ │ │ ├── api/ │ │ │ │ │ ├── legacy/ │ │ │ │ │ │ ├── fetchExploreJson.ts │ │ │ │ │ │ ├── getDatasourceMetadata.ts │ │ │ │ │ │ ├── getFormData.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── v1/ │ │ │ │ │ ├── handleError.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── makeApi.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── buildQueryContext.ts │ │ │ │ ├── buildQueryObject.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── convertFilter.ts │ │ │ │ ├── extractExtras.ts │ │ │ │ ├── extractQueryFields.ts │ │ │ │ ├── extractTimegrain.ts │ │ │ │ ├── getColumnLabel.ts │ │ │ │ ├── getMetricLabel.ts │ │ │ │ ├── index.ts │ │ │ │ ├── normalizeOrderBy.ts │ │ │ │ ├── processExtraFormData.ts │ │ │ │ ├── processFilters.ts │ │ │ │ └── types/ │ │ │ │ ├── AdvancedAnalytics.ts │ │ │ │ ├── AnnotationLayer.ts │ │ │ │ ├── Column.ts │ │ │ │ ├── Datasource.ts │ │ │ │ ├── Filter.ts │ │ │ │ ├── Metric.ts │ │ │ │ ├── Operator.ts │ │ │ │ ├── PostProcessing.ts │ │ │ │ ├── Query.ts │ │ │ │ ├── QueryFormData.ts │ │ │ │ ├── QueryResponse.ts │ │ │ │ ├── Time.ts │ │ │ │ └── index.ts │ │ │ ├── style/ │ │ │ │ └── index.tsx │ │ │ ├── time-format/ │ │ │ │ ├── README.md │ │ │ │ ├── TimeFormats.ts │ │ │ │ ├── TimeFormatsForGranularity.ts │ │ │ │ ├── TimeFormatter.ts │ │ │ │ ├── TimeFormatterRegistry.ts │ │ │ │ ├── TimeFormatterRegistrySingleton.ts │ │ │ │ ├── TimeRangeFormatter.ts │ │ │ │ ├── factories/ │ │ │ │ │ ├── createD3TimeFormatter.ts │ │ │ │ │ └── createMultiFormatter.ts │ │ │ │ ├── formatters/ │ │ │ │ │ ├── smartDate.ts │ │ │ │ │ ├── smartDateDetailed.ts │ │ │ │ │ └── smartDateVerbose.ts │ │ │ │ ├── index.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils/ │ │ │ │ ├── createTime.ts │ │ │ │ ├── createTimeRangeFromGranularity.ts │ │ │ │ ├── d3Time.ts │ │ │ │ └── stringifyTimeInput.ts │ │ │ ├── translation/ │ │ │ │ ├── README.md │ │ │ │ ├── Translator.ts │ │ │ │ ├── TranslatorSingleton.ts │ │ │ │ ├── index.ts │ │ │ │ └── types/ │ │ │ │ ├── index.ts │ │ │ │ └── jed.ts │ │ │ ├── types/ │ │ │ │ └── index.ts │ │ │ ├── utils/ │ │ │ │ ├── convertKeysToCamelCase.ts │ │ │ │ ├── ensureIsArray.ts │ │ │ │ ├── ensureIsInt.ts │ │ │ │ ├── featureFlags.ts │ │ │ │ ├── index.ts │ │ │ │ ├── isDefined.ts │ │ │ │ ├── isRequired.ts │ │ │ │ ├── logging.ts │ │ │ │ ├── makeSingleton.ts │ │ │ │ ├── promiseTimeout.ts │ │ │ │ ├── random.ts │ │ │ │ └── removeDuplicates.ts │ │ │ └── validator/ │ │ │ ├── index.ts │ │ │ ├── legacyValidateInteger.ts │ │ │ ├── legacyValidateNumber.ts │ │ │ ├── validateInteger.ts │ │ │ ├── validateNonEmpty.ts │ │ │ └── validateNumber.ts │ │ ├── test/ │ │ │ ├── __mocks__/ │ │ │ │ └── resize-observer-polyfill.ts │ │ │ ├── chart/ │ │ │ │ ├── clients/ │ │ │ │ │ └── ChartClient.test.ts │ │ │ │ ├── components/ │ │ │ │ │ ├── ChartDataProvider.test.tsx │ │ │ │ │ ├── FallbackComponent.test.tsx │ │ │ │ │ ├── MockChartPlugins.tsx │ │ │ │ │ ├── NoResultsComponent.test.tsx │ │ │ │ │ ├── SuperChart.test.tsx │ │ │ │ │ ├── SuperChartCore.test.tsx │ │ │ │ │ ├── createLoadableRenderer.test.tsx │ │ │ │ │ └── reactify.test.tsx │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── constants.ts │ │ │ │ │ └── formData.ts │ │ │ │ ├── index.test.ts │ │ │ │ └── models/ │ │ │ │ ├── ChartMetadata.test.ts │ │ │ │ ├── ChartPlugin.test.tsx │ │ │ │ └── ChartProps.test.ts │ │ │ ├── chart-composition/ │ │ │ │ ├── ChartFrame.test.tsx │ │ │ │ ├── legend/ │ │ │ │ │ └── WithLegend.test.tsx │ │ │ │ └── tooltip/ │ │ │ │ ├── TooltipFrame.test.tsx │ │ │ │ └── TooltipTable.test.tsx │ │ │ ├── color/ │ │ │ │ ├── CategoricalColorNameSpace.test.ts │ │ │ │ ├── CategoricalColorScale.test.ts │ │ │ │ ├── CategoricalSchemeRegistrySingleton.test.ts │ │ │ │ ├── ColorScheme.test.ts │ │ │ │ ├── ColorSchemeRegistry.test.ts │ │ │ │ ├── SequentialScheme.test.ts │ │ │ │ ├── SequentialSchemeRegistrySingleton.test.ts │ │ │ │ ├── colorSchemes.test.ts │ │ │ │ ├── index.test.ts │ │ │ │ └── utils.test.ts │ │ │ ├── connection/ │ │ │ │ ├── SupersetClient.test.ts │ │ │ │ ├── SupersetClientClass.test.ts │ │ │ │ ├── callApi/ │ │ │ │ │ ├── callApi.test.ts │ │ │ │ │ ├── callApiAndParseWithTimeout.test.ts │ │ │ │ │ ├── parseResponse.test.ts │ │ │ │ │ └── rejectAfterTimeout.test.ts │ │ │ │ └── fixtures/ │ │ │ │ └── constants.ts │ │ │ ├── dimension/ │ │ │ │ ├── computeMaxFontSize.test.ts │ │ │ │ ├── getBBoxDummyFill.ts │ │ │ │ ├── getMultipleTextDimensions.test.ts │ │ │ │ ├── getTextDimension.test.ts │ │ │ │ ├── mergeMargin.test.ts │ │ │ │ ├── parseLength.test.ts │ │ │ │ └── svg/ │ │ │ │ ├── LazyFactory.test.ts │ │ │ │ ├── getBBoxCeil.test.ts │ │ │ │ └── updateTextNode.test.ts │ │ │ ├── dynamic-plugins/ │ │ │ │ └── shared-modules.test.ts │ │ │ ├── fixtures.ts │ │ │ ├── index.test.ts │ │ │ ├── math-expression/ │ │ │ │ └── index.test.ts │ │ │ ├── models/ │ │ │ │ ├── ExtensibleFunction.test.ts │ │ │ │ ├── Plugin.test.ts │ │ │ │ ├── Preset.test.ts │ │ │ │ ├── Registry.test.ts │ │ │ │ └── RegistryWithDefaultKey.test.ts │ │ │ ├── number-format/ │ │ │ │ ├── NumberFormatter.test.ts │ │ │ │ ├── NumberFormatterRegistry.test.ts │ │ │ │ ├── NumberFormatterRegistrySingleton.test.ts │ │ │ │ ├── factories/ │ │ │ │ │ ├── createD3NumberFormatter.test.ts │ │ │ │ │ ├── createDurationFormatter.test.ts │ │ │ │ │ ├── createSiAtMostNDigitFormatter.test.ts │ │ │ │ │ └── createSmartNumberFormatter.test.ts │ │ │ │ └── index.test.ts │ │ │ ├── query/ │ │ │ │ ├── DatasourceKey.test.ts │ │ │ │ ├── api/ │ │ │ │ │ ├── legacy/ │ │ │ │ │ │ ├── fetchExploreJson.test.ts │ │ │ │ │ │ ├── getDatasourceMetadata.test.ts │ │ │ │ │ │ └── getFormData.test.ts │ │ │ │ │ ├── setupClientForTest.ts │ │ │ │ │ └── v1/ │ │ │ │ │ ├── getChartData.test.ts │ │ │ │ │ ├── handleError.test.ts │ │ │ │ │ └── makeApi.test.ts │ │ │ │ ├── buildQueryContext.test.ts │ │ │ │ ├── buildQueryObject.test.ts │ │ │ │ ├── convertFilter.test.ts │ │ │ │ ├── extractExtras.test.ts │ │ │ │ ├── extractQueryFields.test.ts │ │ │ │ ├── extractTimegrain.test.ts │ │ │ │ ├── getColumnLabel.test.ts │ │ │ │ ├── getMetricLabel.test.ts │ │ │ │ ├── normalizeOrderBy.test.ts │ │ │ │ ├── processExtraFormData.test.ts │ │ │ │ ├── processFilters.test.ts │ │ │ │ └── types/ │ │ │ │ ├── AnnotationLayer.test.ts │ │ │ │ ├── Filter.test.ts │ │ │ │ └── PostProcessing.test.ts │ │ │ ├── style/ │ │ │ │ └── index.test.tsx │ │ │ ├── time-format/ │ │ │ │ ├── TimeFormatter.test.ts │ │ │ │ ├── TimeFormatterRegistry.test.ts │ │ │ │ ├── TimeFormatterRegistrySingleton.test.ts │ │ │ │ ├── factories/ │ │ │ │ │ ├── createD3TimeFormatter.test.ts │ │ │ │ │ └── createMultiFormatter.test.ts │ │ │ │ ├── formatters/ │ │ │ │ │ ├── smartDate.test.ts │ │ │ │ │ ├── smartDateDetailed.test.ts │ │ │ │ │ └── smartDateVerbose.test.ts │ │ │ │ ├── index.test.ts │ │ │ │ └── utils/ │ │ │ │ ├── createTime.test.ts │ │ │ │ ├── createTimeRangeFromGranularity.test.ts │ │ │ │ └── d3Time.test.ts │ │ │ ├── translation/ │ │ │ │ ├── Translator.test.ts │ │ │ │ ├── TranslatorSingleton.test.ts │ │ │ │ ├── index.test.ts │ │ │ │ └── languagePacks/ │ │ │ │ ├── en.ts │ │ │ │ └── zh.ts │ │ │ ├── tsconfig.json │ │ │ ├── utils/ │ │ │ │ ├── convertKeysToCamelCase.test.ts │ │ │ │ ├── ensureIsArray.test.ts │ │ │ │ ├── ensureIsInt.test.ts │ │ │ │ ├── featureFlag.test.ts │ │ │ │ ├── isDefined.test.ts │ │ │ │ ├── isRequired.test.ts │ │ │ │ ├── logging.test.ts │ │ │ │ ├── makeSingleton.test.ts │ │ │ │ ├── promiseTimeout.test.ts │ │ │ │ ├── random.test.ts │ │ │ │ └── removeDuplicates.test.ts │ │ │ └── validator/ │ │ │ ├── legacyValidateInteger.test.ts │ │ │ ├── legacyValidateNumber.test.ts │ │ │ ├── setup.ts │ │ │ ├── validateInteger.test.ts │ │ │ ├── validateNonEmpty.test.ts │ │ │ └── validateNumber.test.ts │ │ ├── tsconfig.json │ │ └── types/ │ │ ├── external.d.ts │ │ └── resize-observer-polyfill.d.ts │ └── superset-ui-demo/ │ ├── .storybook/ │ │ ├── main.js │ │ ├── preview.js │ │ ├── storybook.css │ │ └── themeDecorator.js │ ├── CHANGELOG.md │ ├── README.md │ ├── package.json │ ├── storybook/ │ │ ├── shared/ │ │ │ ├── components/ │ │ │ │ ├── ErrorMessage.tsx │ │ │ │ ├── Expandable.tsx │ │ │ │ ├── ResizableChartDemo.tsx │ │ │ │ ├── ResizablePanel.tsx │ │ │ │ ├── VerifyCORS.tsx │ │ │ │ └── createQueryStory.tsx │ │ │ └── dummyDatasource.ts │ │ └── stories/ │ │ ├── plugins/ │ │ │ ├── legacy-plugin-chart-calendar/ │ │ │ │ ├── Stories.tsx │ │ │ │ └── data.ts │ │ │ ├── legacy-plugin-chart-chord/ │ │ │ │ ├── Stories.tsx │ │ │ │ └── data.ts │ │ │ ├── legacy-plugin-chart-country-map/ │ │ │ │ └── CountryMapStories.tsx │ │ │ ├── legacy-plugin-chart-event-flow/ │ │ │ │ └── Stories.jsx │ │ │ ├── legacy-plugin-chart-force-directed/ │ │ │ │ ├── Stories.tsx │ │ │ │ └── data.ts │ │ │ ├── legacy-plugin-chart-heatmap/ │ │ │ │ ├── Stories.tsx │ │ │ │ └── data.ts │ │ │ ├── legacy-plugin-chart-histogram/ │ │ │ │ ├── Stories.tsx │ │ │ │ └── data.ts │ │ │ ├── legacy-plugin-chart-horizon/ │ │ │ │ ├── Stories.tsx │ │ │ │ └── data.ts │ │ │ ├── legacy-plugin-chart-map-box/ │ │ │ │ ├── Stories.tsx │ │ │ │ └── data.ts │ │ │ ├── legacy-plugin-chart-paired-t-test/ │ │ │ │ ├── Stories.tsx │ │ │ │ └── data.ts │ │ │ ├── legacy-plugin-chart-parallel-coordinates/ │ │ │ │ ├── Stories.tsx │ │ │ │ └── data.ts │ │ │ ├── legacy-plugin-chart-partition/ │ │ │ │ ├── Stories.tsx │ │ │ │ └── data.ts │ │ │ ├── legacy-plugin-chart-pivot-table/ │ │ │ │ └── Stories.tsx │ │ │ ├── legacy-plugin-chart-rose/ │ │ │ │ ├── Stories.tsx │ │ │ │ └── data.ts │ │ │ ├── legacy-plugin-chart-sankey/ │ │ │ │ ├── Stories.tsx │ │ │ │ └── data.ts │ │ │ ├── legacy-plugin-chart-sankey-loop/ │ │ │ │ ├── Stories.tsx │ │ │ │ └── data.ts │ │ │ ├── legacy-plugin-chart-sunburst/ │ │ │ │ ├── Stories.tsx │ │ │ │ └── data.ts │ │ │ ├── legacy-plugin-chart-time-table/ │ │ │ │ ├── Stories.tsx │ │ │ │ └── data.ts │ │ │ ├── legacy-plugin-chart-treemap/ │ │ │ │ ├── Stories.tsx │ │ │ │ └── data.ts │ │ │ ├── legacy-plugin-chart-world-map/ │ │ │ │ ├── Stories.tsx │ │ │ │ └── data.ts │ │ │ ├── legacy-preset-chart-big-number/ │ │ │ │ ├── BigNumber/ │ │ │ │ │ ├── BigNumberStories.tsx │ │ │ │ │ └── data.ts │ │ │ │ └── BigNumberTotal/ │ │ │ │ ├── BigNumberTotalStories.tsx │ │ │ │ └── data.ts │ │ │ ├── legacy-preset-chart-nvd3/ │ │ │ │ ├── Area/ │ │ │ │ │ ├── Stories.tsx │ │ │ │ │ ├── data.ts │ │ │ │ │ └── stories/ │ │ │ │ │ ├── controlsShown.tsx │ │ │ │ │ ├── expanded.tsx │ │ │ │ │ ├── stacked.tsx │ │ │ │ │ └── stackedWithBounds.tsx │ │ │ │ ├── Bar/ │ │ │ │ │ ├── Stories.tsx │ │ │ │ │ ├── data.ts │ │ │ │ │ └── stories/ │ │ │ │ │ ├── barWithPositiveAndNegativeValues.tsx │ │ │ │ │ ├── barWithValues.tsx │ │ │ │ │ ├── basic.tsx │ │ │ │ │ └── stackedBarWithValues.tsx │ │ │ │ ├── BoxPlot/ │ │ │ │ │ ├── Stories.tsx │ │ │ │ │ ├── data.ts │ │ │ │ │ └── stories/ │ │ │ │ │ └── basic.tsx │ │ │ │ ├── Bubble/ │ │ │ │ │ ├── Stories.tsx │ │ │ │ │ ├── data.ts │ │ │ │ │ └── stories/ │ │ │ │ │ └── basic.tsx │ │ │ │ ├── Bullet/ │ │ │ │ │ ├── Stories.tsx │ │ │ │ │ ├── data.ts │ │ │ │ │ └── stories/ │ │ │ │ │ └── basic.tsx │ │ │ │ ├── Compare/ │ │ │ │ │ ├── Stories.tsx │ │ │ │ │ ├── data.ts │ │ │ │ │ └── stories/ │ │ │ │ │ ├── basic.tsx │ │ │ │ │ └── timeFormat.tsx │ │ │ │ ├── DistBar/ │ │ │ │ │ ├── Stories.tsx │ │ │ │ │ ├── data.ts │ │ │ │ │ └── stories/ │ │ │ │ │ ├── basic.tsx │ │ │ │ │ └── manyBars.tsx │ │ │ │ ├── DualLine/ │ │ │ │ │ ├── Stories.tsx │ │ │ │ │ ├── data.ts │ │ │ │ │ └── stories/ │ │ │ │ │ ├── basic.tsx │ │ │ │ │ └── verifyConsistentColors.tsx │ │ │ │ ├── Line/ │ │ │ │ │ ├── Stories.tsx │ │ │ │ │ ├── data.ts │ │ │ │ │ └── stories/ │ │ │ │ │ ├── basic.tsx │ │ │ │ │ ├── logScale.tsx │ │ │ │ │ ├── markers.tsx │ │ │ │ │ └── yAxisBounds.tsx │ │ │ │ └── Pie/ │ │ │ │ ├── Stories.tsx │ │ │ │ ├── data.ts │ │ │ │ └── stories/ │ │ │ │ ├── basic.tsx │ │ │ │ └── noData.tsx │ │ │ ├── plugin-chart-echarts/ │ │ │ │ ├── BoxPlot/ │ │ │ │ │ ├── Stories.tsx │ │ │ │ │ └── data.ts │ │ │ │ ├── Funnel/ │ │ │ │ │ ├── Stories.tsx │ │ │ │ │ └── constants.ts │ │ │ │ ├── Gauge/ │ │ │ │ │ ├── Stories.tsx │ │ │ │ │ └── data.ts │ │ │ │ ├── Graph/ │ │ │ │ │ ├── Stories.tsx │ │ │ │ │ └── data.ts │ │ │ │ ├── MixedTimeseries/ │ │ │ │ │ └── Stories.tsx │ │ │ │ ├── Pie/ │ │ │ │ │ ├── Stories.tsx │ │ │ │ │ └── data.ts │ │ │ │ ├── Radar/ │ │ │ │ │ ├── Stories.tsx │ │ │ │ │ └── data.ts │ │ │ │ ├── Timeseries/ │ │ │ │ │ ├── Stories.tsx │ │ │ │ │ └── data.ts │ │ │ │ ├── Tree/ │ │ │ │ │ ├── Stories.tsx │ │ │ │ │ └── data.ts │ │ │ │ └── Treemap/ │ │ │ │ ├── Stories.tsx │ │ │ │ └── data.ts │ │ │ ├── plugin-chart-table/ │ │ │ │ ├── TableStories.tsx │ │ │ │ ├── birthNames.json │ │ │ │ └── testData.ts │ │ │ ├── plugin-chart-word-cloud/ │ │ │ │ ├── Stories.tsx │ │ │ │ └── data.ts │ │ │ └── preset-chart-xy/ │ │ │ ├── BoxPlot/ │ │ │ │ ├── Stories.tsx │ │ │ │ ├── constants.ts │ │ │ │ ├── data.ts │ │ │ │ └── stories/ │ │ │ │ ├── Basic.tsx │ │ │ │ └── Legacy.tsx │ │ │ ├── Line/ │ │ │ │ ├── Stories.tsx │ │ │ │ ├── constants.ts │ │ │ │ ├── data/ │ │ │ │ │ ├── data.js │ │ │ │ │ ├── data2.js │ │ │ │ │ └── legacyData.js │ │ │ │ └── stories/ │ │ │ │ ├── basic.tsx │ │ │ │ ├── flush.tsx │ │ │ │ ├── legacy.tsx │ │ │ │ ├── missing.tsx │ │ │ │ ├── query.tsx │ │ │ │ └── timeShift.tsx │ │ │ └── ScatterPlot/ │ │ │ ├── Stories.tsx │ │ │ ├── constants.ts │ │ │ ├── data/ │ │ │ │ ├── data.ts │ │ │ │ └── legacyData.ts │ │ │ └── stories/ │ │ │ ├── basic.tsx │ │ │ ├── bubble.tsx │ │ │ └── legacy.tsx │ │ ├── superset-ui-chart/ │ │ │ ├── ChartDataProviderStories.tsx │ │ │ └── SuperChartStories.tsx │ │ ├── superset-ui-color/ │ │ │ ├── ColorPallettesStories.jsx │ │ │ ├── RenderPalettes.jsx │ │ │ └── color-styles.css │ │ ├── superset-ui-connection/ │ │ │ └── ConnectionStories.tsx │ │ ├── superset-ui-number-format/ │ │ │ └── BigNumberStories.jsx │ │ ├── superset-ui-style/ │ │ │ └── ThemeStories.jsx │ │ └── superset-ui-time-format/ │ │ └── TimeFormatStories.jsx │ └── tsconfig.json ├── plugins/ │ ├── legacy-plugin-chart-calendar/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── Calendar.js │ │ │ ├── ReactCalendar.jsx │ │ │ ├── controlPanel.ts │ │ │ ├── index.js │ │ │ ├── transformProps.js │ │ │ └── vendor/ │ │ │ ├── cal-heatmap.css │ │ │ ├── cal-heatmap.js │ │ │ └── d3tip.css │ │ └── tsconfig.json │ ├── legacy-plugin-chart-chord/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── Chord.js │ │ │ ├── ReactChord.jsx │ │ │ ├── controlPanel.ts │ │ │ ├── index.js │ │ │ └── transformProps.js │ │ └── tsconfig.json │ ├── legacy-plugin-chart-country-map/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── scripts/ │ │ │ └── Country Map GeoJSON Generator.ipynb │ │ ├── src/ │ │ │ ├── CountryMap.css │ │ │ ├── CountryMap.js │ │ │ ├── ReactCountryMap.js │ │ │ ├── controlPanel.ts │ │ │ ├── countries/ │ │ │ │ ├── australia.geojson │ │ │ │ ├── austria.geojson │ │ │ │ ├── belgium.geojson │ │ │ │ ├── brazil.geojson │ │ │ │ ├── bulgaria.geojson │ │ │ │ ├── canada.geojson │ │ │ │ ├── china.geojson │ │ │ │ ├── denmark.geojson │ │ │ │ ├── egypt.geojson │ │ │ │ ├── estonia.geojson │ │ │ │ ├── finland.geojson │ │ │ │ ├── france.geojson │ │ │ │ ├── germany.geojson │ │ │ │ ├── iceland.geojson │ │ │ │ ├── india.geojson │ │ │ │ ├── indonesia.geojson │ │ │ │ ├── iran.geojson │ │ │ │ ├── italy.geojson │ │ │ │ ├── italy_regions.geojson │ │ │ │ ├── japan.geojson │ │ │ │ ├── korea.geojson │ │ │ │ ├── liechtenstein.geojson │ │ │ │ ├── malaysia.geojson │ │ │ │ ├── morocco.geojson │ │ │ │ ├── myanmar.geojson │ │ │ │ ├── netherlands.geojson │ │ │ │ ├── norway.geojson │ │ │ │ ├── peru.geojson │ │ │ │ ├── poland.geojson │ │ │ │ ├── portugal.geojson │ │ │ │ ├── russia.geojson │ │ │ │ ├── saudi_arabia.geojson │ │ │ │ ├── singapore.geojson │ │ │ │ ├── slovenia.geojson │ │ │ │ ├── spain.geojson │ │ │ │ ├── sweden.geojson │ │ │ │ ├── switzerland.geojson │ │ │ │ ├── syria.geojson │ │ │ │ ├── thailand.geojson │ │ │ │ ├── timorleste.geojson │ │ │ │ ├── uk.geojson │ │ │ │ ├── ukraine.geojson │ │ │ │ ├── uruguay.geojson │ │ │ │ ├── usa.geojson │ │ │ │ ├── vietnam.geojson │ │ │ │ └── zambia.geojson │ │ │ ├── countries.ts │ │ │ ├── geojson.d.ts │ │ │ ├── index.js │ │ │ └── transformProps.js │ │ └── tsconfig.json │ ├── legacy-plugin-chart-event-flow/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── EventFlow.tsx │ │ │ ├── controlPanel.tsx │ │ │ ├── index.ts │ │ │ ├── transformProps.ts │ │ │ └── types/ │ │ │ └── external.d.ts │ │ └── tsconfig.json │ ├── legacy-plugin-chart-force-directed/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── ForceDirected.js │ │ │ ├── ReactForceDirected.jsx │ │ │ ├── controlPanel.ts │ │ │ ├── index.js │ │ │ └── transformProps.js │ │ └── tsconfig.json │ ├── legacy-plugin-chart-heatmap/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── Heatmap.css │ │ │ ├── Heatmap.js │ │ │ ├── ReactHeatmap.js │ │ │ ├── controlPanel.ts │ │ │ ├── index.js │ │ │ ├── transformProps.js │ │ │ └── vendor/ │ │ │ └── d3tip.css │ │ └── tsconfig.json │ ├── legacy-plugin-chart-histogram/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── Histogram.jsx │ │ │ ├── WithLegend.jsx │ │ │ ├── controlPanel.ts │ │ │ ├── index.js │ │ │ └── transformProps.js │ │ └── tsconfig.json │ ├── legacy-plugin-chart-horizon/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── HorizonChart.css │ │ │ ├── HorizonChart.jsx │ │ │ ├── HorizonRow.jsx │ │ │ ├── controlPanel.ts │ │ │ ├── index.js │ │ │ └── transformProps.js │ │ └── tsconfig.json │ ├── legacy-plugin-chart-map-box/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── MapBox.css │ │ │ ├── MapBox.jsx │ │ │ ├── ScatterPlotGlowOverlay.jsx │ │ │ ├── controlPanel.ts │ │ │ ├── index.js │ │ │ ├── transformProps.js │ │ │ └── utils/ │ │ │ ├── geo.js │ │ │ ├── luminanceFromRGB.js │ │ │ └── roundDecimal.js │ │ ├── test/ │ │ │ ├── tsconfig.json │ │ │ └── utils/ │ │ │ └── roundDecimal.test.js │ │ └── tsconfig.json │ ├── legacy-plugin-chart-paired-t-test/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── PairedTTest.css │ │ │ ├── PairedTTest.jsx │ │ │ ├── TTestTable.jsx │ │ │ ├── controlPanel.ts │ │ │ ├── index.js │ │ │ └── transformProps.js │ │ └── tsconfig.json │ ├── legacy-plugin-chart-parallel-coordinates/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── ParallelCoordinates.js │ │ │ ├── ReactParallelCoordinates.jsx │ │ │ ├── controlPanel.ts │ │ │ ├── index.js │ │ │ ├── transformProps.js │ │ │ └── vendor/ │ │ │ └── parcoords/ │ │ │ ├── d3.parcoords.css │ │ │ ├── d3.parcoords.js │ │ │ └── divgrid.js │ │ └── tsconfig.json │ ├── legacy-plugin-chart-partition/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── OptionDescription.tsx │ │ │ ├── Partition.css │ │ │ ├── Partition.js │ │ │ ├── ReactPartition.js │ │ │ ├── controlPanel.tsx │ │ │ ├── index.js │ │ │ └── transformProps.js │ │ ├── test/ │ │ │ ├── OptionDescription.test.jsx │ │ │ └── tsconfig.json │ │ └── tsconfig.json │ ├── legacy-plugin-chart-pivot-table/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── PivotTable.js │ │ │ ├── ReactPivotTable.js │ │ │ ├── controlPanel.ts │ │ │ ├── index.js │ │ │ ├── transformProps.js │ │ │ └── utils/ │ │ │ ├── fixTableHeight.js │ │ │ └── formatCells.ts │ │ ├── test/ │ │ │ └── PivotTable.test.ts │ │ └── tsconfig.json │ ├── legacy-plugin-chart-rose/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── ReactRose.js │ │ │ ├── Rose.css │ │ │ ├── Rose.js │ │ │ ├── controlPanel.tsx │ │ │ ├── index.js │ │ │ └── transformProps.js │ │ └── tsconfig.json │ ├── legacy-plugin-chart-sankey/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── ReactSankey.jsx │ │ │ ├── Sankey.js │ │ │ ├── controlPanel.ts │ │ │ ├── index.js │ │ │ ├── tests/ │ │ │ │ └── utils.test.js │ │ │ ├── transformProps.js │ │ │ └── utils.ts │ │ └── tsconfig.json │ ├── legacy-plugin-chart-sankey-loop/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── ReactSankeyLoop.js │ │ │ ├── SankeyLoop.css │ │ │ ├── SankeyLoop.js │ │ │ ├── controlPanel.ts │ │ │ ├── index.js │ │ │ └── transformProps.js │ │ └── tsconfig.json │ ├── legacy-plugin-chart-sunburst/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── ReactSunburst.js │ │ │ ├── Sunburst.css │ │ │ ├── Sunburst.js │ │ │ ├── controlPanel.ts │ │ │ ├── index.js │ │ │ ├── transformProps.js │ │ │ └── utils/ │ │ │ └── wrapSvgText.js │ │ └── tsconfig.json │ ├── legacy-plugin-chart-time-table/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── FormattedNumber.tsx │ │ │ ├── SparklineCell.tsx │ │ │ ├── TimeTable.tsx │ │ │ ├── TimeTableChartPlugin.ts │ │ │ ├── controlPanel.ts │ │ │ ├── index.ts │ │ │ └── transformProps.ts │ │ ├── tsconfig.json │ │ └── types/ │ │ └── external.d.ts │ ├── legacy-plugin-chart-treemap/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── ReactTreemap.js │ │ │ ├── Treemap.css │ │ │ ├── Treemap.js │ │ │ ├── controlPanel.ts │ │ │ ├── index.js │ │ │ └── transformProps.js │ │ └── tsconfig.json │ ├── legacy-plugin-chart-world-map/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── ReactWorldMap.jsx │ │ │ ├── WorldMap.js │ │ │ ├── controlPanel.ts │ │ │ ├── index.js │ │ │ └── transformProps.js │ │ └── tsconfig.json │ ├── legacy-preset-chart-big-number/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── BigNumber/ │ │ │ │ ├── BigNumber.tsx │ │ │ │ ├── controlPanel.tsx │ │ │ │ ├── index.ts │ │ │ │ └── transformProps.ts │ │ │ ├── BigNumberTotal/ │ │ │ │ ├── controlPanel.ts │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── preset.ts │ │ │ ├── sharedControls.ts │ │ │ └── types/ │ │ │ └── external.d.ts │ │ ├── test/ │ │ │ ├── transformProps.test.ts │ │ │ └── tsconfig.json │ │ └── tsconfig.json │ ├── legacy-preset-chart-nvd3/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── Area/ │ │ │ │ ├── controlPanel.ts │ │ │ │ └── index.js │ │ │ ├── Bar/ │ │ │ │ ├── controlPanel.ts │ │ │ │ └── index.js │ │ │ ├── BoxPlot/ │ │ │ │ └── index.js │ │ │ ├── Bubble/ │ │ │ │ ├── controlPanel.ts │ │ │ │ └── index.js │ │ │ ├── Bullet/ │ │ │ │ ├── controlPanel.ts │ │ │ │ └── index.js │ │ │ ├── Compare/ │ │ │ │ ├── controlPanel.ts │ │ │ │ └── index.js │ │ │ ├── DistBar/ │ │ │ │ ├── controlPanel.ts │ │ │ │ └── index.js │ │ │ ├── DualLine/ │ │ │ │ ├── controlPanel.ts │ │ │ │ └── index.js │ │ │ ├── Line/ │ │ │ │ ├── controlPanel.ts │ │ │ │ └── index.js │ │ │ ├── LineMulti/ │ │ │ │ ├── controlPanel.ts │ │ │ │ └── index.js │ │ │ ├── NVD3Controls.tsx │ │ │ ├── NVD3Vis.js │ │ │ ├── Pie/ │ │ │ │ ├── controlPanel.ts │ │ │ │ └── index.js │ │ │ ├── PropTypes.js │ │ │ ├── ReactNVD3.jsx │ │ │ ├── TimePivot/ │ │ │ │ ├── controlPanel.ts │ │ │ │ └── index.js │ │ │ ├── index.js │ │ │ ├── preset.js │ │ │ ├── transformProps.js │ │ │ ├── utils/ │ │ │ │ ├── isTruthy.js │ │ │ │ └── tokenize.ts │ │ │ ├── utils.js │ │ │ └── vendor/ │ │ │ └── superset/ │ │ │ ├── AnnotationTypes.js │ │ │ └── exploreUtils.js │ │ ├── test/ │ │ │ ├── tsconfig.json │ │ │ ├── utils/ │ │ │ │ ├── isTruthy.test.js │ │ │ │ └── tokenize.test.js │ │ │ └── utils.test.js │ │ └── tsconfig.json │ ├── plugin-chart-echarts/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── BoxPlot/ │ │ │ │ ├── EchartsBoxPlot.tsx │ │ │ │ ├── buildQuery.ts │ │ │ │ ├── controlPanel.ts │ │ │ │ ├── index.ts │ │ │ │ ├── transformProps.ts │ │ │ │ └── types.ts │ │ │ ├── Funnel/ │ │ │ │ ├── EchartsFunnel.tsx │ │ │ │ ├── buildQuery.ts │ │ │ │ ├── controlPanel.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── transformProps.ts │ │ │ │ └── types.ts │ │ │ ├── Gauge/ │ │ │ │ ├── EchartsGauge.tsx │ │ │ │ ├── buildQuery.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── controlPanel.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── transformProps.ts │ │ │ │ └── types.ts │ │ │ ├── Graph/ │ │ │ │ ├── EchartsGraph.tsx │ │ │ │ ├── buildQuery.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── controlPanel.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── transformProps.ts │ │ │ │ └── types.ts │ │ │ ├── MixedTimeseries/ │ │ │ │ ├── EchartsMixedTimeseries.tsx │ │ │ │ ├── buildQuery.ts │ │ │ │ ├── controlPanel.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── transformProps.ts │ │ │ │ └── types.ts │ │ │ ├── Pie/ │ │ │ │ ├── EchartsPie.tsx │ │ │ │ ├── buildQuery.ts │ │ │ │ ├── controlPanel.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── transformProps.ts │ │ │ │ └── types.ts │ │ │ ├── Radar/ │ │ │ │ ├── EchartsRadar.tsx │ │ │ │ ├── buildQuery.ts │ │ │ │ ├── controlPanel.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── transformProps.ts │ │ │ │ └── types.ts │ │ │ ├── Timeseries/ │ │ │ │ ├── Area/ │ │ │ │ │ ├── controlPanel.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── EchartsTimeseries.tsx │ │ │ │ ├── Regular/ │ │ │ │ │ ├── Bar/ │ │ │ │ │ │ ├── controlPanel.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── Line/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── Scatter/ │ │ │ │ │ │ ├── controlPanel.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── SmoothLine/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── controlPanel.tsx │ │ │ │ ├── Step/ │ │ │ │ │ ├── controlPanel.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── buildQuery.ts │ │ │ │ ├── controlPanel.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── transformProps.ts │ │ │ │ ├── transformers.ts │ │ │ │ └── types.ts │ │ │ ├── Tree/ │ │ │ │ ├── EchartsTree.tsx │ │ │ │ ├── buildQuery.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── controlPanel.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── transformProps.ts │ │ │ │ └── types.ts │ │ │ ├── Treemap/ │ │ │ │ ├── EchartsTreemap.tsx │ │ │ │ ├── buildQuery.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── controlPanel.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── transformProps.ts │ │ │ │ └── types.ts │ │ │ ├── components/ │ │ │ │ └── Echart.tsx │ │ │ ├── constants.ts │ │ │ ├── controls.tsx │ │ │ ├── defaults.ts │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ └── utils/ │ │ │ ├── annotation.ts │ │ │ ├── controls.ts │ │ │ ├── prophet.ts │ │ │ └── series.ts │ │ ├── test/ │ │ │ ├── BoxPlot/ │ │ │ │ ├── buildQuery.test.ts │ │ │ │ └── transformProps.test.ts │ │ │ ├── Funnel/ │ │ │ │ ├── buildQuery.test.ts │ │ │ │ └── transformProps.test.ts │ │ │ ├── Gauge/ │ │ │ │ ├── buildQuery.test.ts │ │ │ │ └── transformProps.test.ts │ │ │ ├── Graph/ │ │ │ │ ├── buildQuery.test.ts │ │ │ │ └── transformProps.test.ts │ │ │ ├── Pie/ │ │ │ │ ├── buildQuery.test.ts │ │ │ │ └── transformProps.test.ts │ │ │ ├── Timeseries/ │ │ │ │ ├── buildQuery.test.ts │ │ │ │ └── transformProps.test.ts │ │ │ ├── Tree/ │ │ │ │ ├── buildQuery.test.ts │ │ │ │ └── transformProps.test.ts │ │ │ ├── Treemap/ │ │ │ │ ├── buildQuery.test.ts │ │ │ │ └── transformProps.test.ts │ │ │ ├── index.test.ts │ │ │ ├── tsconfig.json │ │ │ └── utils/ │ │ │ ├── annotation.test.ts │ │ │ ├── controls.test.ts │ │ │ ├── prophet.test.ts │ │ │ └── series.test.ts │ │ ├── tsconfig.json │ │ └── types/ │ │ └── external.d.ts │ ├── plugin-chart-pivot-table/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── PivotTableChart.tsx │ │ │ ├── index.ts │ │ │ ├── plugin/ │ │ │ │ ├── buildQuery.ts │ │ │ │ ├── controlPanel.ts │ │ │ │ ├── index.ts │ │ │ │ └── transformProps.ts │ │ │ └── types.ts │ │ ├── test/ │ │ │ ├── index.test.ts │ │ │ └── plugin/ │ │ │ ├── buildQuery.test.ts │ │ │ └── transformProps.test.ts │ │ ├── tsconfig.json │ │ └── types/ │ │ └── external.d.ts │ ├── plugin-chart-table/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── DataTable/ │ │ │ │ ├── DataTable.tsx │ │ │ │ ├── README.md │ │ │ │ ├── components/ │ │ │ │ │ ├── GlobalFilter.tsx │ │ │ │ │ ├── Pagination.tsx │ │ │ │ │ └── SelectPageSize.tsx │ │ │ │ ├── hooks/ │ │ │ │ │ └── useSticky.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── types/ │ │ │ │ │ └── react-table.d.ts │ │ │ │ └── utils/ │ │ │ │ ├── externalAPIs.ts │ │ │ │ ├── getScrollBarSize.ts │ │ │ │ ├── needScrollBar.ts │ │ │ │ ├── useAsyncState.ts │ │ │ │ └── useMountedMemo.ts │ │ │ ├── Styles.tsx │ │ │ ├── TableChart.tsx │ │ │ ├── buildQuery.ts │ │ │ ├── consts.ts │ │ │ ├── controlPanel.tsx │ │ │ ├── i18n.ts │ │ │ ├── index.ts │ │ │ ├── transformProps.ts │ │ │ ├── types.ts │ │ │ └── utils/ │ │ │ ├── DateWithFormatter.ts │ │ │ ├── extent.ts │ │ │ ├── formatValue.ts │ │ │ ├── isEqualArray.ts │ │ │ └── isEqualColumns.ts │ │ ├── test/ │ │ │ ├── TableChart.test.tsx │ │ │ ├── buildQuery.test.ts │ │ │ ├── enzyme.tsx │ │ │ ├── testData.ts │ │ │ └── tsconfig.json │ │ ├── tsconfig.json │ │ └── types/ │ │ └── external.d.ts │ ├── plugin-chart-word-cloud/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── chart/ │ │ │ │ ├── Encoder.ts │ │ │ │ └── WordCloud.tsx │ │ │ ├── configureEncodable.ts │ │ │ ├── index.ts │ │ │ ├── legacyPlugin/ │ │ │ │ ├── index.ts │ │ │ │ ├── transformProps.ts │ │ │ │ └── types.ts │ │ │ ├── plugin/ │ │ │ │ ├── buildQuery.ts │ │ │ │ ├── controlPanel.ts │ │ │ │ ├── index.ts │ │ │ │ └── transformProps.ts │ │ │ └── types.ts │ │ ├── test/ │ │ │ ├── index.test.ts │ │ │ ├── legacyPlugin/ │ │ │ │ └── transformProps.test.ts │ │ │ ├── plugin/ │ │ │ │ └── buildQuery.test.ts │ │ │ └── tsconfig.json │ │ ├── tsconfig.json │ │ └── types/ │ │ └── external.d.ts │ └── preset-chart-xy/ │ ├── CHANGELOG.md │ ├── README.md │ ├── package.json │ ├── src/ │ │ ├── BoxPlot/ │ │ │ ├── controlPanel.ts │ │ │ ├── createMetadata.ts │ │ │ ├── index.ts │ │ │ ├── legacy/ │ │ │ │ ├── index.ts │ │ │ │ └── transformProps.ts │ │ │ └── transformProps.ts │ │ ├── Line/ │ │ │ ├── ChartFormData.ts │ │ │ ├── buildQuery.ts │ │ │ ├── createMetadata.ts │ │ │ ├── index.ts │ │ │ ├── legacy/ │ │ │ │ ├── index.ts │ │ │ │ └── transformProps.ts │ │ │ └── transformProps.ts │ │ ├── ScatterPlot/ │ │ │ ├── createMetadata.ts │ │ │ ├── index.ts │ │ │ ├── legacy/ │ │ │ │ ├── index.ts │ │ │ │ └── transformProps.ts │ │ │ └── transformProps.ts │ │ ├── components/ │ │ │ ├── BoxPlot/ │ │ │ │ ├── BoxPlot.tsx │ │ │ │ ├── DefaultTooltipRenderer.tsx │ │ │ │ ├── Encoder.ts │ │ │ │ └── types.ts │ │ │ ├── Line/ │ │ │ │ ├── DefaultLegendItemMarkRenderer.tsx │ │ │ │ ├── DefaultTooltipRenderer.tsx │ │ │ │ ├── Encoder.ts │ │ │ │ └── Line.tsx │ │ │ ├── ScatterPlot/ │ │ │ │ ├── DefaultTooltipRenderer.tsx │ │ │ │ ├── Encoder.ts │ │ │ │ └── ScatterPlot.tsx │ │ │ └── legend/ │ │ │ ├── DefaultLegend.tsx │ │ │ ├── DefaultLegendGroup.tsx │ │ │ ├── DefaultLegendItem.tsx │ │ │ ├── createRenderLegend.tsx │ │ │ └── types.ts │ │ ├── configureEncodable.ts │ │ ├── index.ts │ │ └── utils/ │ │ ├── XYChartLayout.tsx │ │ ├── computeAxisLayout.ts │ │ ├── convertScaleToDataUIScaleShape.ts │ │ ├── createMarginSelector.tsx │ │ ├── createTickComponent.tsx │ │ ├── createTickLabelProps.ts │ │ └── createXYChartLayoutWithTheme.ts │ ├── test/ │ │ ├── index.test.ts │ │ └── tsconfig.json │ ├── tsconfig.json │ └── types/ │ ├── @data-ui/ │ │ ├── theme/ │ │ │ └── index.d.ts │ │ └── xy-chart/ │ │ └── index.d.ts │ └── external.d.ts ├── prettier.config.js ├── scripts/ │ ├── build.js │ ├── check_license.sh │ ├── commitlint.js │ ├── copyAssets.js │ ├── lernaVersion.sh │ └── tsc.sh ├── temporary-plugins/ │ ├── README.md │ ├── hold-potentially-deprecate/ │ │ ├── superset-ui-legacy-plugin-chart-word-cloud/ │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ └── src/ │ │ │ ├── ReactWordCloud.js │ │ │ ├── WordCloud.js │ │ │ ├── index.js │ │ │ └── transformProps.js │ │ └── superset-ui-plugin-chart-table/ │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── Table.tsx │ │ │ ├── TableFormData.ts │ │ │ ├── buildQuery.ts │ │ │ ├── components/ │ │ │ │ └── HTMLRenderer.tsx │ │ │ ├── createMetadata.ts │ │ │ ├── getRenderer.tsx │ │ │ ├── index.ts │ │ │ ├── legacy/ │ │ │ │ ├── index.ts │ │ │ │ └── transformProps.ts │ │ │ ├── processColumns.ts │ │ │ ├── processData.ts │ │ │ ├── processMetrics.ts │ │ │ ├── transformProps.ts │ │ │ └── types.ts │ │ ├── test/ │ │ │ ├── buildQuery.test.ts │ │ │ ├── processData.test.ts │ │ │ └── processMetrics.test.ts │ │ └── types/ │ │ └── external.d.ts │ ├── plugin-chart-choropleth-map/ │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── chart/ │ │ │ │ ├── ChoroplethMap.tsx │ │ │ │ ├── Encoder.ts │ │ │ │ ├── MapMetadata.ts │ │ │ │ ├── MapTooltip.tsx │ │ │ │ ├── Projection.ts │ │ │ │ ├── components.ts │ │ │ │ └── loadMap.ts │ │ │ ├── configureEncodable.ts │ │ │ ├── index.ts │ │ │ ├── maps/ │ │ │ │ ├── belgium-topo.json │ │ │ │ ├── brazil-topo.json │ │ │ │ ├── bulgaria-topo.json │ │ │ │ ├── canada-topo.json │ │ │ │ ├── china-topo.json │ │ │ │ ├── france-topo.json │ │ │ │ ├── germany-topo.json │ │ │ │ ├── index.ts │ │ │ │ ├── india-topo.json │ │ │ │ ├── iran-topo.json │ │ │ │ ├── italy-topo.json │ │ │ │ ├── japan-topo.json │ │ │ │ ├── korea-topo.json │ │ │ │ ├── liechtenstein-topo.json │ │ │ │ ├── morocco-topo.json │ │ │ │ ├── myanmar-topo.json │ │ │ │ ├── netherlands-topo.json │ │ │ │ ├── portugal-topo.json │ │ │ │ ├── russia-topo.json │ │ │ │ ├── singapore-topo.json │ │ │ │ ├── spain-topo.json │ │ │ │ ├── switzerland-topo.json │ │ │ │ ├── thailand-topo.json │ │ │ │ ├── timorleste-topo.json │ │ │ │ ├── uk-topo.json │ │ │ │ ├── ukraine-topo.json │ │ │ │ ├── usa-topo.json │ │ │ │ ├── world-topo.json │ │ │ │ └── zambia-topo.json │ │ │ ├── plugin/ │ │ │ │ ├── index.ts │ │ │ │ └── transformProps.ts │ │ │ └── types.ts │ │ ├── stories/ │ │ │ ├── ChoroplethMap.stories.tsx │ │ │ ├── generateFakeMapData.ts │ │ │ └── useFakeMapData.ts │ │ ├── test/ │ │ │ ├── index.test.ts │ │ │ └── tsconfig.json │ │ ├── tsconfig.json │ │ └── types/ │ │ └── external.d.ts │ ├── setupJest.js │ └── superset-ui-plugins-demo/ │ ├── .storybook/ │ │ ├── addons.js │ │ ├── config.js │ │ └── storybook.css │ ├── README.md │ ├── package.json │ └── storybook/ │ └── stories/ │ └── legacy-plugin-chart-word-cloud/ │ ├── Stories.tsx │ ├── data.js │ └── index.js ├── test/ │ ├── __mocks__/ │ │ ├── mockExportObject.js │ │ ├── mockExportString.js │ │ └── svgrMock.tsx │ ├── setup.ts │ └── shims/ │ ├── Cache.ts │ └── CacheStorage.ts ├── tsconfig.eslint.json └── tsconfig.json