@highcharts/grid-pro 2.0.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.
- package/README.md +35 -0
- package/css/grid-pro.css +1756 -0
- package/es-modules/Accessibility/A11yI18n.d.ts +95 -0
- package/es-modules/Accessibility/A11yI18n.js +290 -0
- package/es-modules/Accessibility/Accessibility.d.ts +116 -0
- package/es-modules/Accessibility/Accessibility.js +402 -0
- package/es-modules/Accessibility/AccessibilityComponent.d.ts +97 -0
- package/es-modules/Accessibility/AccessibilityComponent.js +147 -0
- package/es-modules/Accessibility/Components/AnnotationsA11y.d.ts +43 -0
- package/es-modules/Accessibility/Components/AnnotationsA11y.js +160 -0
- package/es-modules/Accessibility/Components/ContainerComponent.d.ts +48 -0
- package/es-modules/Accessibility/Components/ContainerComponent.js +142 -0
- package/es-modules/Accessibility/Components/InfoRegionsComponent.d.ts +144 -0
- package/es-modules/Accessibility/Components/InfoRegionsComponent.js +555 -0
- package/es-modules/Accessibility/Components/LegendComponent.d.ts +124 -0
- package/es-modules/Accessibility/Components/LegendComponent.js +474 -0
- package/es-modules/Accessibility/Components/MenuComponent.d.ts +93 -0
- package/es-modules/Accessibility/Components/MenuComponent.js +430 -0
- package/es-modules/Accessibility/Components/NavigatorComponent.d.ts +57 -0
- package/es-modules/Accessibility/Components/NavigatorComponent.js +235 -0
- package/es-modules/Accessibility/Components/RangeSelectorComponent.d.ts +126 -0
- package/es-modules/Accessibility/Components/RangeSelectorComponent.js +473 -0
- package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.d.ts +18 -0
- package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +234 -0
- package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.d.ts +87 -0
- package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +309 -0
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.d.ts +53 -0
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +130 -0
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.d.ts +28 -0
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +415 -0
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.d.ts +114 -0
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +721 -0
- package/es-modules/Accessibility/Components/ZoomComponent.d.ts +96 -0
- package/es-modules/Accessibility/Components/ZoomComponent.js +314 -0
- package/es-modules/Accessibility/FocusBorder.d.ts +40 -0
- package/es-modules/Accessibility/FocusBorder.js +301 -0
- package/es-modules/Accessibility/HighContrastMode.d.ts +35 -0
- package/es-modules/Accessibility/HighContrastMode.js +100 -0
- package/es-modules/Accessibility/HighContrastTheme.d.ts +11 -0
- package/es-modules/Accessibility/HighContrastTheme.js +212 -0
- package/es-modules/Accessibility/KeyboardNavigation.d.ts +133 -0
- package/es-modules/Accessibility/KeyboardNavigation.js +450 -0
- package/es-modules/Accessibility/KeyboardNavigationHandler.d.ts +48 -0
- package/es-modules/Accessibility/KeyboardNavigationHandler.js +126 -0
- package/es-modules/Accessibility/Options/A11yDefaults.d.ts +68 -0
- package/es-modules/Accessibility/Options/A11yDefaults.js +971 -0
- package/es-modules/Accessibility/Options/DeprecatedOptions.d.ts +22 -0
- package/es-modules/Accessibility/Options/DeprecatedOptions.js +265 -0
- package/es-modules/Accessibility/Options/LangDefaults.d.ts +4 -0
- package/es-modules/Accessibility/Options/LangDefaults.js +440 -0
- package/es-modules/Accessibility/ProxyElement.d.ts +78 -0
- package/es-modules/Accessibility/ProxyElement.js +223 -0
- package/es-modules/Accessibility/ProxyProvider.d.ts +90 -0
- package/es-modules/Accessibility/ProxyProvider.js +315 -0
- package/es-modules/Accessibility/Utils/Announcer.d.ts +26 -0
- package/es-modules/Accessibility/Utils/Announcer.js +90 -0
- package/es-modules/Accessibility/Utils/ChartUtilities.d.ts +90 -0
- package/es-modules/Accessibility/Utils/ChartUtilities.js +298 -0
- package/es-modules/Accessibility/Utils/DOMElementProvider.d.ts +20 -0
- package/es-modules/Accessibility/Utils/DOMElementProvider.js +69 -0
- package/es-modules/Accessibility/Utils/EventProvider.d.ts +26 -0
- package/es-modules/Accessibility/Utils/EventProvider.js +65 -0
- package/es-modules/Accessibility/Utils/HTMLUtilities.d.ts +108 -0
- package/es-modules/Accessibility/Utils/HTMLUtilities.js +319 -0
- package/es-modules/Core/Animation/AnimationUtilities.d.ts +107 -0
- package/es-modules/Core/Animation/AnimationUtilities.js +200 -0
- package/es-modules/Core/Animation/Fx.d.ts +130 -0
- package/es-modules/Core/Animation/Fx.js +388 -0
- package/es-modules/Core/Chart/Chart.d.ts +1009 -0
- package/es-modules/Core/Chart/Chart.js +3008 -0
- package/es-modules/Core/Chart/Chart3D.d.ts +276 -0
- package/es-modules/Core/Chart/Chart3D.js +1686 -0
- package/es-modules/Core/Chart/ChartDefaults.d.ts +8 -0
- package/es-modules/Core/Chart/ChartDefaults.js +1304 -0
- package/es-modules/Core/Chart/ChartNavigationComposition.d.ts +55 -0
- package/es-modules/Core/Chart/ChartNavigationComposition.js +90 -0
- package/es-modules/Core/Chart/GanttChart.d.ts +74 -0
- package/es-modules/Core/Chart/GanttChart.js +189 -0
- package/es-modules/Core/Chart/MapChart.d.ts +132 -0
- package/es-modules/Core/Chart/MapChart.js +232 -0
- package/es-modules/Core/Chart/StockChart.d.ts +117 -0
- package/es-modules/Core/Chart/StockChart.js +641 -0
- package/es-modules/Core/Color/Color.d.ts +112 -0
- package/es-modules/Core/Color/Color.js +418 -0
- package/es-modules/Core/Color/Palettes.d.ts +84 -0
- package/es-modules/Core/Color/Palettes.js +23 -0
- package/es-modules/Core/Defaults.d.ts +42 -0
- package/es-modules/Core/Defaults.js +2977 -0
- package/es-modules/Core/Foundation.d.ts +19 -0
- package/es-modules/Core/Foundation.js +63 -0
- package/es-modules/Core/Geometry/CircleUtilities.d.ts +189 -0
- package/es-modules/Core/Geometry/CircleUtilities.js +388 -0
- package/es-modules/Core/Geometry/GeometryUtilities.d.ts +48 -0
- package/es-modules/Core/Geometry/GeometryUtilities.js +105 -0
- package/es-modules/Core/Geometry/PolygonClip.d.ts +19 -0
- package/es-modules/Core/Geometry/PolygonClip.js +96 -0
- package/es-modules/Core/Globals.d.ts +110 -0
- package/es-modules/Core/Globals.js +127 -0
- package/es-modules/Core/HttpUtilities.d.ts +61 -0
- package/es-modules/Core/HttpUtilities.js +214 -0
- package/es-modules/Core/MSPointer.d.ts +74 -0
- package/es-modules/Core/MSPointer.js +218 -0
- package/es-modules/Core/Math3D.d.ts +117 -0
- package/es-modules/Core/Math3D.js +250 -0
- package/es-modules/Core/Pointer.d.ts +590 -0
- package/es-modules/Core/Pointer.js +1631 -0
- package/es-modules/Core/Renderer/HTML/AST.d.ts +163 -0
- package/es-modules/Core/Renderer/HTML/AST.js +562 -0
- package/es-modules/Core/Renderer/HTML/HTMLElement.d.ts +76 -0
- package/es-modules/Core/Renderer/HTML/HTMLElement.js +471 -0
- package/es-modules/Core/Renderer/RendererRegistry.d.ts +29 -0
- package/es-modules/Core/Renderer/RendererRegistry.js +76 -0
- package/es-modules/Core/Renderer/RendererUtilities.d.ts +26 -0
- package/es-modules/Core/Renderer/RendererUtilities.js +172 -0
- package/es-modules/Core/Responsive.d.ts +55 -0
- package/es-modules/Core/Responsive.js +260 -0
- package/es-modules/Core/Templating.d.ts +125 -0
- package/es-modules/Core/Templating.js +428 -0
- package/es-modules/Core/Time.d.ts +69 -0
- package/es-modules/Core/Time.js +172 -0
- package/es-modules/Core/Tooltip.d.ts +297 -0
- package/es-modules/Core/Tooltip.js +1377 -0
- package/es-modules/Core/Utilities.d.ts +770 -0
- package/es-modules/Core/Utilities.js +1989 -0
- package/es-modules/Data/ColumnUtils.d.ts +87 -0
- package/es-modules/Data/ColumnUtils.js +140 -0
- package/es-modules/Data/Connectors/CSVConnector.d.ts +63 -0
- package/es-modules/Data/Connectors/CSVConnector.js +149 -0
- package/es-modules/Data/Connectors/CSVConnectorOptions.d.ts +149 -0
- package/es-modules/Data/Connectors/DataConnector.d.ts +204 -0
- package/es-modules/Data/Connectors/DataConnector.js +345 -0
- package/es-modules/Data/Connectors/DataConnectorOptions.d.ts +87 -0
- package/es-modules/Data/Connectors/DataConnectorType.d.ts +45 -0
- package/es-modules/Data/Connectors/GoogleSheetsConnector.d.ts +65 -0
- package/es-modules/Data/Connectors/GoogleSheetsConnector.js +226 -0
- package/es-modules/Data/Connectors/GoogleSheetsConnectorOptions.d.ts +167 -0
- package/es-modules/Data/Connectors/HTMLTableConnector.d.ts +77 -0
- package/es-modules/Data/Connectors/HTMLTableConnector.js +119 -0
- package/es-modules/Data/Connectors/HTMLTableConnectorOptions.d.ts +49 -0
- package/es-modules/Data/Connectors/JSONConnector.d.ts +64 -0
- package/es-modules/Data/Connectors/JSONConnector.js +156 -0
- package/es-modules/Data/Connectors/JSONConnectorOptions.d.ts +185 -0
- package/es-modules/Data/Converters/CSVConverter.d.ts +64 -0
- package/es-modules/Data/Converters/CSVConverter.js +374 -0
- package/es-modules/Data/Converters/CSVConverterOptions.d.ts +53 -0
- package/es-modules/Data/Converters/DataConverter.d.ts +168 -0
- package/es-modules/Data/Converters/DataConverter.js +387 -0
- package/es-modules/Data/Converters/DataConverterType.d.ts +40 -0
- package/es-modules/Data/Converters/DataConverterUtils.d.ts +82 -0
- package/es-modules/Data/Converters/DataConverterUtils.js +216 -0
- package/es-modules/Data/Converters/GoogleSheetsConverter.d.ts +46 -0
- package/es-modules/Data/Converters/GoogleSheetsConverter.js +135 -0
- package/es-modules/Data/Converters/GoogleSheetsConverterOptions.d.ts +52 -0
- package/es-modules/Data/Converters/HTMLTableConverter.d.ts +72 -0
- package/es-modules/Data/Converters/HTMLTableConverter.js +362 -0
- package/es-modules/Data/Converters/HTMLTableConverterOptions.d.ts +51 -0
- package/es-modules/Data/Converters/JSONConverter.d.ts +99 -0
- package/es-modules/Data/Converters/JSONConverter.js +239 -0
- package/es-modules/Data/Converters/JSONConverterOptions.d.ts +52 -0
- package/es-modules/Data/DataCursor.d.ts +176 -0
- package/es-modules/Data/DataCursor.js +379 -0
- package/es-modules/Data/DataEvent.d.ts +81 -0
- package/es-modules/Data/DataEvent.js +14 -0
- package/es-modules/Data/DataPool.d.ts +130 -0
- package/es-modules/Data/DataPool.js +257 -0
- package/es-modules/Data/DataPoolOptions.d.ts +66 -0
- package/es-modules/Data/DataTable.d.ts +563 -0
- package/es-modules/Data/DataTable.js +930 -0
- package/es-modules/Data/DataTableCore.d.ts +165 -0
- package/es-modules/Data/DataTableCore.js +316 -0
- package/es-modules/Data/DataTableOptions.d.ts +25 -0
- package/es-modules/Data/DataTableOptions.js +15 -0
- package/es-modules/Data/Formula/Formula.d.ts +21 -0
- package/es-modules/Data/Formula/Formula.js +54 -0
- package/es-modules/Data/Formula/FormulaParser.d.ts +31 -0
- package/es-modules/Data/Formula/FormulaParser.js +488 -0
- package/es-modules/Data/Formula/FormulaProcessor.d.ts +155 -0
- package/es-modules/Data/Formula/FormulaProcessor.js +529 -0
- package/es-modules/Data/Formula/FormulaTypes.d.ts +138 -0
- package/es-modules/Data/Formula/FormulaTypes.js +135 -0
- package/es-modules/Data/Formula/Functions/ABS.d.ts +19 -0
- package/es-modules/Data/Formula/Functions/ABS.js +67 -0
- package/es-modules/Data/Formula/Functions/AND.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/AND.js +59 -0
- package/es-modules/Data/Formula/Functions/AVERAGE.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/AVERAGE.js +74 -0
- package/es-modules/Data/Formula/Functions/AVERAGEA.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/AVERAGEA.js +90 -0
- package/es-modules/Data/Formula/Functions/COUNT.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/COUNT.js +65 -0
- package/es-modules/Data/Formula/Functions/COUNTA.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/COUNTA.js +71 -0
- package/es-modules/Data/Formula/Functions/IF.d.ts +21 -0
- package/es-modules/Data/Formula/Functions/IF.js +54 -0
- package/es-modules/Data/Formula/Functions/ISNA.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/ISNA.js +52 -0
- package/es-modules/Data/Formula/Functions/MAX.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/MAX.js +69 -0
- package/es-modules/Data/Formula/Functions/MEDIAN.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/MEDIAN.js +78 -0
- package/es-modules/Data/Formula/Functions/MIN.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/MIN.js +69 -0
- package/es-modules/Data/Formula/Functions/MOD.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/MOD.js +63 -0
- package/es-modules/Data/Formula/Functions/MODE.d.ts +41 -0
- package/es-modules/Data/Formula/Functions/MODE.js +149 -0
- package/es-modules/Data/Formula/Functions/NOT.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/NOT.js +60 -0
- package/es-modules/Data/Formula/Functions/OR.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/OR.js +62 -0
- package/es-modules/Data/Formula/Functions/PRODUCT.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/PRODUCT.js +68 -0
- package/es-modules/Data/Formula/Functions/SUM.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/SUM.js +65 -0
- package/es-modules/Data/Formula/Functions/XOR.d.ts +20 -0
- package/es-modules/Data/Formula/Functions/XOR.js +81 -0
- package/es-modules/Data/Modifiers/ChainModifier.d.ts +128 -0
- package/es-modules/Data/Modifiers/ChainModifier.js +231 -0
- package/es-modules/Data/Modifiers/ChainModifierOptions.d.ts +20 -0
- package/es-modules/Data/Modifiers/ChainModifierOptions.js +14 -0
- package/es-modules/Data/Modifiers/DataModifier.d.ts +117 -0
- package/es-modules/Data/Modifiers/DataModifier.js +202 -0
- package/es-modules/Data/Modifiers/DataModifierEvent.d.ts +28 -0
- package/es-modules/Data/Modifiers/DataModifierEvent.js +15 -0
- package/es-modules/Data/Modifiers/DataModifierOptions.d.ts +11 -0
- package/es-modules/Data/Modifiers/DataModifierOptions.js +15 -0
- package/es-modules/Data/Modifiers/DataModifierType.d.ts +44 -0
- package/es-modules/Data/Modifiers/FilterModifier.d.ts +53 -0
- package/es-modules/Data/Modifiers/FilterModifier.js +172 -0
- package/es-modules/Data/Modifiers/FilterModifierOptions.d.ts +110 -0
- package/es-modules/Data/Modifiers/FilterModifierOptions.js +14 -0
- package/es-modules/Data/Modifiers/InvertModifier.d.ts +48 -0
- package/es-modules/Data/Modifiers/InvertModifier.js +116 -0
- package/es-modules/Data/Modifiers/InvertModifierOptions.d.ts +11 -0
- package/es-modules/Data/Modifiers/InvertModifierOptions.js +15 -0
- package/es-modules/Data/Modifiers/MathModifier.d.ts +68 -0
- package/es-modules/Data/Modifiers/MathModifier.js +165 -0
- package/es-modules/Data/Modifiers/MathModifierOptions.d.ts +50 -0
- package/es-modules/Data/Modifiers/MathModifierOptions.js +14 -0
- package/es-modules/Data/Modifiers/RangeModifier.d.ts +46 -0
- package/es-modules/Data/Modifiers/RangeModifier.js +96 -0
- package/es-modules/Data/Modifiers/RangeModifierOptions.d.ts +22 -0
- package/es-modules/Data/Modifiers/RangeModifierOptions.js +15 -0
- package/es-modules/Data/Modifiers/SortModifier.d.ts +54 -0
- package/es-modules/Data/Modifiers/SortModifier.js +144 -0
- package/es-modules/Data/Modifiers/SortModifierOptions.d.ts +44 -0
- package/es-modules/Data/Modifiers/SortModifierOptions.js +14 -0
- package/es-modules/Grid/Core/Accessibility/A11yOptions.d.ts +148 -0
- package/es-modules/Grid/Core/Accessibility/A11yOptions.js +17 -0
- package/es-modules/Grid/Core/Accessibility/Accessibility.d.ts +115 -0
- package/es-modules/Grid/Core/Accessibility/Accessibility.js +231 -0
- package/es-modules/Grid/Core/Credits.d.ts +57 -0
- package/es-modules/Grid/Core/Credits.js +125 -0
- package/es-modules/Grid/Core/Defaults.d.ts +20 -0
- package/es-modules/Grid/Core/Defaults.js +148 -0
- package/es-modules/Grid/Core/Globals.d.ts +103 -0
- package/es-modules/Grid/Core/Globals.js +134 -0
- package/es-modules/Grid/Core/Grid.d.ts +295 -0
- package/es-modules/Grid/Core/Grid.js +730 -0
- package/es-modules/Grid/Core/GridUtils.d.ts +110 -0
- package/es-modules/Grid/Core/GridUtils.js +191 -0
- package/es-modules/Grid/Core/Options.d.ts +599 -0
- package/es-modules/Grid/Core/Options.js +16 -0
- package/es-modules/Grid/Core/Pagination/Icons.d.ts +7 -0
- package/es-modules/Grid/Core/Pagination/Icons.js +7 -0
- package/es-modules/Grid/Core/Pagination/Pagination.d.ts +278 -0
- package/es-modules/Grid/Core/Pagination/Pagination.js +842 -0
- package/es-modules/Grid/Core/Pagination/PaginationOptions.d.ts +228 -0
- package/es-modules/Grid/Core/Querying/FilteringController.d.ts +66 -0
- package/es-modules/Grid/Core/Querying/FilteringController.js +256 -0
- package/es-modules/Grid/Core/Querying/PaginationController.d.ts +50 -0
- package/es-modules/Grid/Core/Querying/PaginationController.js +101 -0
- package/es-modules/Grid/Core/Querying/QueryingController.d.ts +58 -0
- package/es-modules/Grid/Core/Querying/QueryingController.js +127 -0
- package/es-modules/Grid/Core/Querying/SortingController.d.ts +67 -0
- package/es-modules/Grid/Core/Querying/SortingController.js +136 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/ColumnFiltering.d.ts +114 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/ColumnFiltering.js +351 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterCell.d.ts +14 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterCell.js +86 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterRow.d.ts +19 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterRow.js +80 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilteringTypes.d.ts +52 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilteringTypes.js +81 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnSorting.d.ts +56 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnSorting.js +170 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnsResizer.d.ts +55 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnsResizer.js +182 -0
- package/es-modules/Grid/Core/Table/Actions/RowsVirtualizer.d.ts +87 -0
- package/es-modules/Grid/Core/Table/Actions/RowsVirtualizer.js +346 -0
- package/es-modules/Grid/Core/Table/Body/TableCell.d.ts +88 -0
- package/es-modules/Grid/Core/Table/Body/TableCell.js +231 -0
- package/es-modules/Grid/Core/Table/Body/TableRow.d.ts +79 -0
- package/es-modules/Grid/Core/Table/Body/TableRow.js +177 -0
- package/es-modules/Grid/Core/Table/Cell.d.ts +92 -0
- package/es-modules/Grid/Core/Table/Cell.js +223 -0
- package/es-modules/Grid/Core/Table/CellContent/CellContent.d.ts +30 -0
- package/es-modules/Grid/Core/Table/CellContent/CellContent.js +40 -0
- package/es-modules/Grid/Core/Table/CellContent/TextContent.d.ts +19 -0
- package/es-modules/Grid/Core/Table/CellContent/TextContent.js +98 -0
- package/es-modules/Grid/Core/Table/Column.d.ts +136 -0
- package/es-modules/Grid/Core/Table/Column.js +230 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/AdjacentResizingMode.d.ts +7 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/AdjacentResizingMode.js +62 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/ColumnResizing.d.ts +32 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/ColumnResizing.js +68 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/DistributedResizingMode.d.ts +7 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/DistributedResizingMode.js +53 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/IndependentResizingMode.d.ts +7 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/IndependentResizingMode.js +63 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/ResizingMode.d.ts +92 -0
- package/es-modules/Grid/Core/Table/ColumnResizing/ResizingMode.js +194 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ColumnToolbar.d.ts +68 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ColumnToolbar.js +187 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/FilterPopup.d.ts +29 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/FilterPopup.js +77 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/FilterMenuButton.d.ts +13 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/FilterMenuButton.js +79 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/SortMenuButton.d.ts +12 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/SortMenuButton.js +71 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuPopup.d.ts +12 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuPopup.js +66 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/StateHelpers.d.ts +25 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/StateHelpers.js +65 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/FilterToolbarButton.d.ts +12 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/FilterToolbarButton.js +81 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/MenuToolbarButton.d.ts +12 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/MenuToolbarButton.js +80 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/SortToolbarButton.d.ts +11 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/SortToolbarButton.js +81 -0
- package/es-modules/Grid/Core/Table/Header/HeaderCell.d.ts +70 -0
- package/es-modules/Grid/Core/Table/Header/HeaderCell.js +225 -0
- package/es-modules/Grid/Core/Table/Header/HeaderRow.d.ts +53 -0
- package/es-modules/Grid/Core/Table/Header/HeaderRow.js +182 -0
- package/es-modules/Grid/Core/Table/Header/TableHeader.d.ts +65 -0
- package/es-modules/Grid/Core/Table/Header/TableHeader.js +159 -0
- package/es-modules/Grid/Core/Table/Row.d.ts +76 -0
- package/es-modules/Grid/Core/Table/Row.js +131 -0
- package/es-modules/Grid/Core/Table/Table.d.ts +181 -0
- package/es-modules/Grid/Core/Table/Table.js +399 -0
- package/es-modules/Grid/Core/UI/Button.d.ts +31 -0
- package/es-modules/Grid/Core/UI/Button.js +16 -0
- package/es-modules/Grid/Core/UI/ContextMenu.d.ts +38 -0
- package/es-modules/Grid/Core/UI/ContextMenu.js +132 -0
- package/es-modules/Grid/Core/UI/ContextMenuButton.d.ts +126 -0
- package/es-modules/Grid/Core/UI/ContextMenuButton.js +183 -0
- package/es-modules/Grid/Core/UI/Popup.d.ts +149 -0
- package/es-modules/Grid/Core/UI/Popup.js +271 -0
- package/es-modules/Grid/Core/UI/SvgIcons.d.ts +53 -0
- package/es-modules/Grid/Core/UI/SvgIcons.js +158 -0
- package/es-modules/Grid/Core/UI/Toolbar.d.ts +16 -0
- package/es-modules/Grid/Core/UI/Toolbar.js +16 -0
- package/es-modules/Grid/Core/UI/ToolbarButton.d.ts +135 -0
- package/es-modules/Grid/Core/UI/ToolbarButton.js +191 -0
- package/es-modules/Grid/Pro/CellEditing/CellEditMode.d.ts +112 -0
- package/es-modules/Grid/Pro/CellEditing/CellEditing.d.ts +80 -0
- package/es-modules/Grid/Pro/CellEditing/CellEditing.js +211 -0
- package/es-modules/Grid/Pro/CellEditing/CellEditingComposition.d.ts +123 -0
- package/es-modules/Grid/Pro/CellEditing/CellEditingComposition.js +198 -0
- package/es-modules/Grid/Pro/CellRendering/CellContentPro.d.ts +23 -0
- package/es-modules/Grid/Pro/CellRendering/CellContentPro.js +45 -0
- package/es-modules/Grid/Pro/CellRendering/CellRenderer.d.ts +50 -0
- package/es-modules/Grid/Pro/CellRendering/CellRenderer.js +41 -0
- package/es-modules/Grid/Pro/CellRendering/CellRendererRegistry.d.ts +18 -0
- package/es-modules/Grid/Pro/CellRendering/CellRendererRegistry.js +58 -0
- package/es-modules/Grid/Pro/CellRendering/CellRendererType.d.ts +48 -0
- package/es-modules/Grid/Pro/CellRendering/CellRenderersComposition.d.ts +18 -0
- package/es-modules/Grid/Pro/CellRendering/CellRenderersComposition.js +79 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/CheckboxContent.d.ts +30 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/CheckboxContent.js +122 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContent.d.ts +12 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContent.js +39 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContentBase.d.ts +66 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContentBase.js +145 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateTimeInputContent.d.ts +12 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateTimeInputContent.js +38 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/NumberInputContent.d.ts +58 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/NumberInputContent.js +158 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/SelectContent.d.ts +58 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/SelectContent.js +173 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/SparklineContent.d.ts +28 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/SparklineContent.js +157 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/TextInputContent.d.ts +58 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/TextInputContent.js +168 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/TimeInputContent.d.ts +13 -0
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/TimeInputContent.js +41 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/CheckboxRenderer.d.ts +50 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/CheckboxRenderer.js +65 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRenderer.d.ts +37 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRenderer.js +65 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRendererBase.d.ts +26 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRendererBase.js +16 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateTimeInputRenderer.d.ts +37 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateTimeInputRenderer.js +64 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/NumberInputRenderer.d.ts +52 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/NumberInputRenderer.js +64 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/SelectRenderer.d.ts +74 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/SelectRenderer.js +66 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/SparklineRenderer.d.ts +45 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/SparklineRenderer.js +89 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/TextInputRenderer.d.ts +54 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/TextInputRenderer.js +65 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/TextRenderer.d.ts +43 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/TextRenderer.js +74 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/TimeInputRenderer.d.ts +37 -0
- package/es-modules/Grid/Pro/CellRendering/Renderers/TimeInputRenderer.js +64 -0
- package/es-modules/Grid/Pro/ColumnTypes/ColumnDataType.d.ts +29 -0
- package/es-modules/Grid/Pro/ColumnTypes/Validator.d.ts +118 -0
- package/es-modules/Grid/Pro/ColumnTypes/Validator.js +270 -0
- package/es-modules/Grid/Pro/ColumnTypes/ValidatorComposition.d.ts +32 -0
- package/es-modules/Grid/Pro/ColumnTypes/ValidatorComposition.js +63 -0
- package/es-modules/Grid/Pro/Credits/CreditsPro.d.ts +35 -0
- package/es-modules/Grid/Pro/Credits/CreditsPro.js +112 -0
- package/es-modules/Grid/Pro/Credits/CreditsProComposition.d.ts +28 -0
- package/es-modules/Grid/Pro/Credits/CreditsProComposition.js +61 -0
- package/es-modules/Grid/Pro/Export/Exporting.d.ts +68 -0
- package/es-modules/Grid/Pro/Export/Exporting.js +202 -0
- package/es-modules/Grid/Pro/Export/ExportingComposition.d.ts +68 -0
- package/es-modules/Grid/Pro/Export/ExportingComposition.js +55 -0
- package/es-modules/Grid/Pro/GridEvents.d.ts +119 -0
- package/es-modules/Grid/Pro/GridEvents.js +107 -0
- package/es-modules/Grid/Pro/Pagination/PaginationComposition.d.ts +75 -0
- package/es-modules/Grid/Pro/Pagination/PaginationComposition.js +76 -0
- package/es-modules/Grid/Pro/highcharts.d.ts +7 -0
- package/es-modules/Grid/index.d.ts +5 -0
- package/es-modules/Grid/index.js +19 -0
- package/es-modules/Shared/BaseForm.d.ts +49 -0
- package/es-modules/Shared/BaseForm.js +126 -0
- package/es-modules/Shared/DownloadURL.d.ts +85 -0
- package/es-modules/Shared/DownloadURL.js +198 -0
- package/es-modules/Shared/LangOptionsCore.d.ts +27 -0
- package/es-modules/Shared/TimeBase.d.ts +353 -0
- package/es-modules/Shared/TimeBase.js +830 -0
- package/es-modules/Shared/Types.d.ts +48 -0
- package/es-modules/masters/grid-pro.src.d.ts +99 -0
- package/es-modules/masters/grid-pro.src.js +129 -0
- package/grid-pro.d.ts +50 -0
- package/grid-pro.js +12 -0
- package/grid-pro.js.map +1 -0
- package/grid-pro.src.d.ts +50 -0
- package/grid-pro.src.js +26623 -0
- package/package.json +21 -0
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
/* *
|
|
2
|
+
*
|
|
3
|
+
* (c) 2009-2025 Highsoft AS
|
|
4
|
+
*
|
|
5
|
+
* License: www.highcharts.com/license
|
|
6
|
+
*
|
|
7
|
+
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
8
|
+
*
|
|
9
|
+
* Authors:
|
|
10
|
+
* - Torstein Hønsi
|
|
11
|
+
* - Christer Vasseng
|
|
12
|
+
* - Gøran Slettemark
|
|
13
|
+
* - Sophie Bremer
|
|
14
|
+
* - Kamil Kubik
|
|
15
|
+
*
|
|
16
|
+
* */
|
|
17
|
+
'use strict';
|
|
18
|
+
import DataConverter from './DataConverter.js';
|
|
19
|
+
import DataConverterUtils from './DataConverterUtils.js';
|
|
20
|
+
import U from '../../Core/Utilities.js';
|
|
21
|
+
const { merge } = U;
|
|
22
|
+
/* *
|
|
23
|
+
*
|
|
24
|
+
* Class
|
|
25
|
+
*
|
|
26
|
+
* */
|
|
27
|
+
/**
|
|
28
|
+
* Handles parsing and transforming CSV to a table.
|
|
29
|
+
*
|
|
30
|
+
* @private
|
|
31
|
+
*/
|
|
32
|
+
class CSVConverter extends DataConverter {
|
|
33
|
+
/* *
|
|
34
|
+
*
|
|
35
|
+
* Constructor
|
|
36
|
+
*
|
|
37
|
+
* */
|
|
38
|
+
/**
|
|
39
|
+
* Constructs an instance of the CSV parser.
|
|
40
|
+
*
|
|
41
|
+
* @param {Partial<CSVConverterOptions>} [options]
|
|
42
|
+
* Options for the CSV parser.
|
|
43
|
+
*/
|
|
44
|
+
constructor(options) {
|
|
45
|
+
const mergedOptions = merge(CSVConverter.defaultOptions, options);
|
|
46
|
+
super(mergedOptions);
|
|
47
|
+
/* *
|
|
48
|
+
*
|
|
49
|
+
* Properties
|
|
50
|
+
*
|
|
51
|
+
* */
|
|
52
|
+
this.headers = [];
|
|
53
|
+
this.dataTypes = [];
|
|
54
|
+
this.options = mergedOptions;
|
|
55
|
+
}
|
|
56
|
+
/* *
|
|
57
|
+
*
|
|
58
|
+
* Functions
|
|
59
|
+
*
|
|
60
|
+
* */
|
|
61
|
+
/**
|
|
62
|
+
* Parses the CSV string into a DataTable column collection.
|
|
63
|
+
* Handles line and item delimiters, optional header row, and
|
|
64
|
+
* applies pre-processing if a beforeParse callback is provided.
|
|
65
|
+
*
|
|
66
|
+
* @param {Partial<CSVConverterOptions>} [options]
|
|
67
|
+
* Options for the parser.
|
|
68
|
+
* @param {DataEvent.Detail} [eventDetail]
|
|
69
|
+
* Custom information for pending events.
|
|
70
|
+
* @return {DataTable.ColumnCollection}
|
|
71
|
+
* The parsed column collection.
|
|
72
|
+
*
|
|
73
|
+
* @emits CSVDataParser#parse
|
|
74
|
+
* @emits CSVDataParser#afterParse
|
|
75
|
+
*/
|
|
76
|
+
parse(options, eventDetail) {
|
|
77
|
+
const converter = this, dataTypes = converter.dataTypes, parserOptions = merge(this.options, options), { beforeParse, lineDelimiter, firstRowAsNames, itemDelimiter } = parserOptions;
|
|
78
|
+
let lines, rowIt = 0, { csv, startRow, endRow } = parserOptions, column;
|
|
79
|
+
const columnsArray = [];
|
|
80
|
+
converter.emit({
|
|
81
|
+
type: 'parse',
|
|
82
|
+
columns: columnsArray,
|
|
83
|
+
detail: eventDetail,
|
|
84
|
+
headers: converter.headers
|
|
85
|
+
});
|
|
86
|
+
if (csv && beforeParse) {
|
|
87
|
+
csv = beforeParse(csv);
|
|
88
|
+
}
|
|
89
|
+
if (csv) {
|
|
90
|
+
lines = csv
|
|
91
|
+
.replace(/\r\n|\r/g, '\n') // Windows | Mac
|
|
92
|
+
.split(lineDelimiter || '\n');
|
|
93
|
+
if (!startRow || startRow < 0) {
|
|
94
|
+
startRow = 0;
|
|
95
|
+
}
|
|
96
|
+
if (!endRow || endRow >= lines.length) {
|
|
97
|
+
endRow = lines.length - 1;
|
|
98
|
+
}
|
|
99
|
+
if (!itemDelimiter) {
|
|
100
|
+
converter.guessedItemDelimiter =
|
|
101
|
+
converter.guessDelimiter(lines);
|
|
102
|
+
}
|
|
103
|
+
// If the first row contain names, add them to the
|
|
104
|
+
// headers array and skip the row.
|
|
105
|
+
if (firstRowAsNames) {
|
|
106
|
+
const headers = lines[0].split(itemDelimiter || converter.guessedItemDelimiter || ',');
|
|
107
|
+
// Remove ""s from the headers
|
|
108
|
+
for (let i = 0; i < headers.length; i++) {
|
|
109
|
+
headers[i] = headers[i].trim().replace(/^["']|["']$/g, '');
|
|
110
|
+
}
|
|
111
|
+
converter.headers = headers;
|
|
112
|
+
startRow++;
|
|
113
|
+
}
|
|
114
|
+
let offset = 0;
|
|
115
|
+
for (rowIt = startRow; rowIt <= endRow; rowIt++) {
|
|
116
|
+
if (lines[rowIt][0] === '#') {
|
|
117
|
+
offset++;
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
converter.parseCSVRow(columnsArray, lines[rowIt], rowIt - startRow - offset);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (dataTypes.length &&
|
|
124
|
+
dataTypes[0].length &&
|
|
125
|
+
dataTypes[0][1] === 'date' && // Format is a string date
|
|
126
|
+
!converter.options.dateFormat) {
|
|
127
|
+
converter.deduceDateFormat(columnsArray[0], null, true);
|
|
128
|
+
}
|
|
129
|
+
// Guess types.
|
|
130
|
+
for (let i = 0, iEnd = columnsArray.length; i < iEnd; ++i) {
|
|
131
|
+
column = columnsArray[i];
|
|
132
|
+
for (let j = 0, jEnd = column.length; j < jEnd; ++j) {
|
|
133
|
+
if (column[j] && typeof column[j] === 'string') {
|
|
134
|
+
let cellValue = converter.convertByType(column[j]);
|
|
135
|
+
if (cellValue instanceof Date) {
|
|
136
|
+
cellValue = cellValue.getTime();
|
|
137
|
+
}
|
|
138
|
+
columnsArray[i][j] = cellValue;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// Normalize columns to same length to avoid truncation.
|
|
144
|
+
columnsArray.forEach((col) => {
|
|
145
|
+
col.length = Math.max(...columnsArray.map((c) => c.length));
|
|
146
|
+
});
|
|
147
|
+
converter.emit({
|
|
148
|
+
type: 'afterParse',
|
|
149
|
+
columns: columnsArray,
|
|
150
|
+
detail: eventDetail,
|
|
151
|
+
headers: converter.headers
|
|
152
|
+
});
|
|
153
|
+
return DataConverterUtils.getColumnsCollection(columnsArray, converter.headers);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Parses a single CSV row string into columns, handling delimiters,
|
|
157
|
+
* quoted values, data type inference, and column range selection.
|
|
158
|
+
*/
|
|
159
|
+
parseCSVRow(columns, columnStr, rowNumber) {
|
|
160
|
+
const converter = this, dataTypes = converter.dataTypes, { startColumn, endColumn } = converter.options, itemDelimiter = (converter.options.itemDelimiter ||
|
|
161
|
+
converter.guessedItemDelimiter);
|
|
162
|
+
let { decimalPoint } = converter.options;
|
|
163
|
+
if (!decimalPoint || decimalPoint === itemDelimiter) {
|
|
164
|
+
decimalPoint = converter.guessedDecimalPoint || '.';
|
|
165
|
+
}
|
|
166
|
+
let i = 0, c = '', token = '', actualColumn = 0, column = 0;
|
|
167
|
+
const read = (j) => {
|
|
168
|
+
c = columnStr[j];
|
|
169
|
+
};
|
|
170
|
+
const pushType = (type) => {
|
|
171
|
+
if (dataTypes.length < column + 1) {
|
|
172
|
+
dataTypes.push([type]);
|
|
173
|
+
}
|
|
174
|
+
if (dataTypes[column][dataTypes[column].length - 1] !== type) {
|
|
175
|
+
dataTypes[column].push(type);
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
const push = () => {
|
|
179
|
+
if (startColumn > actualColumn || actualColumn > endColumn) {
|
|
180
|
+
// Skip this column, but increment the column count (#7272)
|
|
181
|
+
++actualColumn;
|
|
182
|
+
token = '';
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
// Save the type of the token.
|
|
186
|
+
if (typeof token === 'string') {
|
|
187
|
+
const parsedNumber = parseFloat(token);
|
|
188
|
+
if (!isNaN(parsedNumber) && isFinite(Number(token))) {
|
|
189
|
+
token = parsedNumber;
|
|
190
|
+
pushType('number');
|
|
191
|
+
}
|
|
192
|
+
else if (!isNaN(Date.parse(token))) {
|
|
193
|
+
token = token.replace(/\//g, '-');
|
|
194
|
+
pushType('date');
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
pushType('string');
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
pushType('number');
|
|
202
|
+
}
|
|
203
|
+
if (columns.length < column + 1) {
|
|
204
|
+
columns.push([]);
|
|
205
|
+
}
|
|
206
|
+
// Try to apply the decimal point, and check if the token then is a
|
|
207
|
+
// number. If not, reapply the initial value
|
|
208
|
+
if (typeof token !== 'number' &&
|
|
209
|
+
DataConverterUtils.guessType(token, converter) !== 'number' &&
|
|
210
|
+
decimalPoint) {
|
|
211
|
+
const initialValue = token;
|
|
212
|
+
token = token.replace(decimalPoint, '.');
|
|
213
|
+
if (DataConverterUtils.guessType(token, converter) !== 'number') {
|
|
214
|
+
token = initialValue;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
columns[column][rowNumber] = token;
|
|
218
|
+
token = '';
|
|
219
|
+
++column;
|
|
220
|
+
++actualColumn;
|
|
221
|
+
};
|
|
222
|
+
if (!columnStr.trim().length) {
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
if (columnStr.trim()[0] === '#') {
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
for (; i < columnStr.length; i++) {
|
|
229
|
+
read(i);
|
|
230
|
+
if (c === '#') {
|
|
231
|
+
// If there are hexvalues remaining (#13283)
|
|
232
|
+
if (!/^#[A-F\d]{3,3}|[A-F\d]{6,6}/i.test(columnStr.substring(i))) {
|
|
233
|
+
// The rest of the row is a comment
|
|
234
|
+
push();
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
// Quoted string
|
|
239
|
+
if (c === '"') {
|
|
240
|
+
read(++i);
|
|
241
|
+
while (i < columnStr.length) {
|
|
242
|
+
if (c === '"') {
|
|
243
|
+
break;
|
|
244
|
+
}
|
|
245
|
+
token += c;
|
|
246
|
+
read(++i);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
else if (c === itemDelimiter) {
|
|
250
|
+
push();
|
|
251
|
+
// Actual column data
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
token += c;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
push();
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Internal method that guesses the delimiter from the first
|
|
261
|
+
* 13 lines of the CSV
|
|
262
|
+
* @param {string[]} lines
|
|
263
|
+
* The CSV, split into lines
|
|
264
|
+
*/
|
|
265
|
+
guessDelimiter(lines) {
|
|
266
|
+
let points = 0, commas = 0, guessed;
|
|
267
|
+
const potDelimiters = {
|
|
268
|
+
',': 0,
|
|
269
|
+
';': 0,
|
|
270
|
+
'\t': 0
|
|
271
|
+
}, linesCount = lines.length;
|
|
272
|
+
for (let i = 0; i < linesCount; i++) {
|
|
273
|
+
let inStr = false, c, cn, cl, token = '';
|
|
274
|
+
// We should be able to detect dateformats within 13 rows
|
|
275
|
+
if (i > 13) {
|
|
276
|
+
break;
|
|
277
|
+
}
|
|
278
|
+
const columnStr = lines[i];
|
|
279
|
+
for (let j = 0; j < columnStr.length; j++) {
|
|
280
|
+
c = columnStr[j];
|
|
281
|
+
cn = columnStr[j + 1];
|
|
282
|
+
cl = columnStr[j - 1];
|
|
283
|
+
if (c === '#') {
|
|
284
|
+
// Skip the rest of the line - it's a comment
|
|
285
|
+
break;
|
|
286
|
+
}
|
|
287
|
+
if (c === '"') {
|
|
288
|
+
if (inStr) {
|
|
289
|
+
if (cl !== '"' && cn !== '"') {
|
|
290
|
+
while (cn === ' ' && j < columnStr.length) {
|
|
291
|
+
cn = columnStr[++j];
|
|
292
|
+
}
|
|
293
|
+
// After parsing a string, the next non-blank
|
|
294
|
+
// should be a delimiter if the CSV is properly
|
|
295
|
+
// formed.
|
|
296
|
+
if (typeof potDelimiters[cn] !== 'undefined') {
|
|
297
|
+
potDelimiters[cn]++;
|
|
298
|
+
}
|
|
299
|
+
inStr = false;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
else {
|
|
303
|
+
inStr = true;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
else if (typeof potDelimiters[c] !== 'undefined') {
|
|
307
|
+
token = token.trim();
|
|
308
|
+
if (!isNaN(Date.parse(token))) {
|
|
309
|
+
potDelimiters[c]++;
|
|
310
|
+
}
|
|
311
|
+
else if (isNaN(Number(token)) ||
|
|
312
|
+
!isFinite(Number(token))) {
|
|
313
|
+
potDelimiters[c]++;
|
|
314
|
+
}
|
|
315
|
+
token = '';
|
|
316
|
+
}
|
|
317
|
+
else {
|
|
318
|
+
token += c;
|
|
319
|
+
}
|
|
320
|
+
if (c === ',') {
|
|
321
|
+
commas++;
|
|
322
|
+
}
|
|
323
|
+
if (c === '.') {
|
|
324
|
+
points++;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
// Count the potential delimiters.
|
|
329
|
+
// This could be improved by checking if the number of delimiters
|
|
330
|
+
// equals the number of columns - 1
|
|
331
|
+
if (potDelimiters[';'] > potDelimiters[',']) {
|
|
332
|
+
guessed = ';';
|
|
333
|
+
}
|
|
334
|
+
else if (potDelimiters[','] > potDelimiters[';']) {
|
|
335
|
+
guessed = ',';
|
|
336
|
+
}
|
|
337
|
+
else {
|
|
338
|
+
// No good guess could be made..
|
|
339
|
+
guessed = ',';
|
|
340
|
+
}
|
|
341
|
+
// Try to deduce the decimal point if it's not explicitly set.
|
|
342
|
+
// If both commas or points is > 0 there is likely an issue
|
|
343
|
+
if (points > commas) {
|
|
344
|
+
this.guessedDecimalPoint = '.';
|
|
345
|
+
}
|
|
346
|
+
else {
|
|
347
|
+
this.guessedDecimalPoint = ',';
|
|
348
|
+
}
|
|
349
|
+
return guessed;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
/* *
|
|
353
|
+
*
|
|
354
|
+
* Static Properties
|
|
355
|
+
*
|
|
356
|
+
* */
|
|
357
|
+
/**
|
|
358
|
+
* Default options
|
|
359
|
+
*/
|
|
360
|
+
CSVConverter.defaultOptions = {
|
|
361
|
+
...DataConverter.defaultOptions,
|
|
362
|
+
lineDelimiter: '\n',
|
|
363
|
+
startColumn: 0,
|
|
364
|
+
endColumn: Number.MAX_VALUE,
|
|
365
|
+
startRow: 0,
|
|
366
|
+
endRow: Number.MAX_VALUE
|
|
367
|
+
};
|
|
368
|
+
DataConverter.registerType('CSV', CSVConverter);
|
|
369
|
+
/* *
|
|
370
|
+
*
|
|
371
|
+
* Default Export
|
|
372
|
+
*
|
|
373
|
+
* */
|
|
374
|
+
export default CSVConverter;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/* *
|
|
2
|
+
*
|
|
3
|
+
* (c) 2009-2025 Highsoft AS
|
|
4
|
+
*
|
|
5
|
+
* License: www.highcharts.com/license
|
|
6
|
+
*
|
|
7
|
+
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
8
|
+
*
|
|
9
|
+
* Authors:
|
|
10
|
+
* - Kamil Kubik
|
|
11
|
+
*
|
|
12
|
+
* */
|
|
13
|
+
|
|
14
|
+
/* *
|
|
15
|
+
*
|
|
16
|
+
* Imports
|
|
17
|
+
*
|
|
18
|
+
* */
|
|
19
|
+
|
|
20
|
+
import type { CSVBeforeParseCallbackFunction } from '../Connectors/CSVConnectorOptions';
|
|
21
|
+
|
|
22
|
+
import DataConverter from './DataConverter';
|
|
23
|
+
|
|
24
|
+
/* *
|
|
25
|
+
*
|
|
26
|
+
* Declarations
|
|
27
|
+
*
|
|
28
|
+
* */
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Options of the CSVConverter.
|
|
32
|
+
*/
|
|
33
|
+
export interface CSVConverterOptions extends DataConverter.Options {
|
|
34
|
+
startRow: number;
|
|
35
|
+
endRow: number;
|
|
36
|
+
startColumn: number;
|
|
37
|
+
endColumn: number;
|
|
38
|
+
csv?: string;
|
|
39
|
+
decimalPoint?: string;
|
|
40
|
+
itemDelimiter?: string;
|
|
41
|
+
lineDelimiter: string;
|
|
42
|
+
useLocalDecimalPoint?: boolean;
|
|
43
|
+
decimalRegex?: RegExp;
|
|
44
|
+
beforeParse?: CSVBeforeParseCallbackFunction;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/* *
|
|
48
|
+
*
|
|
49
|
+
* Default Export
|
|
50
|
+
*
|
|
51
|
+
* */
|
|
52
|
+
|
|
53
|
+
export default CSVConverterOptions;
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import type { DataConverterTypes } from './DataConverterType';
|
|
2
|
+
import type DataEvent from '../DataEvent';
|
|
3
|
+
import type { ColumnIdsOptions } from '../Connectors/JSONConnectorOptions';
|
|
4
|
+
import DataTable from '../DataTable.js';
|
|
5
|
+
/**
|
|
6
|
+
* Base class providing an interface and basic methods for a DataConverter
|
|
7
|
+
*
|
|
8
|
+
* @private
|
|
9
|
+
*/
|
|
10
|
+
declare class DataConverter implements DataEvent.Emitter<DataConverter.Event> {
|
|
11
|
+
/**
|
|
12
|
+
* Default options
|
|
13
|
+
*/
|
|
14
|
+
protected static readonly defaultOptions: DataConverter.Options;
|
|
15
|
+
/**
|
|
16
|
+
* Constructs an instance of the DataConverter.
|
|
17
|
+
*
|
|
18
|
+
* @param {DataConverter.UserOptions} [options]
|
|
19
|
+
* Options for the DataConverter.
|
|
20
|
+
*/
|
|
21
|
+
constructor(options?: DataConverter.UserOptions);
|
|
22
|
+
/**
|
|
23
|
+
* A collection of available date formats.
|
|
24
|
+
*/
|
|
25
|
+
dateFormats: Record<string, DataConverter.DateFormatObject>;
|
|
26
|
+
/**
|
|
27
|
+
* Regular expression used in the trim method to change a decimal point.
|
|
28
|
+
*/
|
|
29
|
+
decimalRegExp?: RegExp;
|
|
30
|
+
/**
|
|
31
|
+
* Options for the DataConverter.
|
|
32
|
+
*/
|
|
33
|
+
readonly options: DataConverter.Options;
|
|
34
|
+
/**
|
|
35
|
+
* Converts a string value based on its guessed type.
|
|
36
|
+
*
|
|
37
|
+
* @param {*} value
|
|
38
|
+
* The value to examine.
|
|
39
|
+
*
|
|
40
|
+
* @return {number | string | Date}
|
|
41
|
+
* The converted value.
|
|
42
|
+
*/
|
|
43
|
+
convertByType(value: DataConverter.Type): number | string | Date;
|
|
44
|
+
/**
|
|
45
|
+
* Tries to guess the date format
|
|
46
|
+
* - Check if either month candidate exceeds 12
|
|
47
|
+
* - Check if year is missing (use current year)
|
|
48
|
+
* - Check if a shortened year format is used (e.g. 1/1/99)
|
|
49
|
+
* - If no guess can be made, the user must be prompted
|
|
50
|
+
* data is the data to deduce a format based on
|
|
51
|
+
* @private
|
|
52
|
+
*
|
|
53
|
+
* @param {string[]} data
|
|
54
|
+
* Data to check the format.
|
|
55
|
+
*
|
|
56
|
+
* @param {number} limit
|
|
57
|
+
* Max data to check the format.
|
|
58
|
+
*
|
|
59
|
+
* @param {boolean} save
|
|
60
|
+
* Whether to save the date format in the converter options.
|
|
61
|
+
*/
|
|
62
|
+
deduceDateFormat(data: string[], limit?: number | null, save?: boolean): string;
|
|
63
|
+
/**
|
|
64
|
+
* Emits an event on the DataConverter instance.
|
|
65
|
+
*
|
|
66
|
+
* @param {DataConverter.Event} [e]
|
|
67
|
+
* Event object containing additional event data
|
|
68
|
+
*/
|
|
69
|
+
emit(e: DataConverter.Event): void;
|
|
70
|
+
/**
|
|
71
|
+
* Registers a callback for a specific event.
|
|
72
|
+
*
|
|
73
|
+
* @param {string} type
|
|
74
|
+
* Event type as a string.
|
|
75
|
+
*
|
|
76
|
+
* @param {DataEventEmitter.Callback} callback
|
|
77
|
+
* Function to register for an modifier callback.
|
|
78
|
+
*
|
|
79
|
+
* @return {Function}
|
|
80
|
+
* Function to unregister callback from the modifier event.
|
|
81
|
+
*/
|
|
82
|
+
on<T extends DataConverter.Event['type']>(type: T, callback: DataEvent.Callback<this, Extract<DataConverter.Event, {
|
|
83
|
+
type: T;
|
|
84
|
+
}>>): Function;
|
|
85
|
+
/**
|
|
86
|
+
* Parse a date and return it as a number.
|
|
87
|
+
*
|
|
88
|
+
* @param {string} value
|
|
89
|
+
* Value to parse.
|
|
90
|
+
*
|
|
91
|
+
* @param {string} dateFormatProp
|
|
92
|
+
* Which of the predefined date formats
|
|
93
|
+
* to use to parse date values.
|
|
94
|
+
*/
|
|
95
|
+
parseDate(value: string, dateFormatProp?: string): number;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Additionally provided types for events and conversion.
|
|
99
|
+
*/
|
|
100
|
+
declare namespace DataConverter {
|
|
101
|
+
/**
|
|
102
|
+
* The basic event object for a DataConverter instance.
|
|
103
|
+
* Valid types are `parse`, `afterParse`, and `parseError`
|
|
104
|
+
*/
|
|
105
|
+
interface Event extends DataEvent {
|
|
106
|
+
readonly type: ('export' | 'afterExport' | 'exportError' | 'parse' | 'afterParse' | 'parseError');
|
|
107
|
+
readonly columns: DataTable.Column[];
|
|
108
|
+
readonly error?: string | Error;
|
|
109
|
+
readonly headers: string[] | ColumnIdsOptions;
|
|
110
|
+
}
|
|
111
|
+
interface DateFormatCallbackFunction {
|
|
112
|
+
(match: ReturnType<string['match']>): number;
|
|
113
|
+
}
|
|
114
|
+
interface DateFormatObject {
|
|
115
|
+
alternative?: string;
|
|
116
|
+
parser: DateFormatCallbackFunction;
|
|
117
|
+
regex: RegExp;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* The shared options for all DataConverter instances
|
|
121
|
+
*/
|
|
122
|
+
interface Options {
|
|
123
|
+
dateFormat?: string;
|
|
124
|
+
decimalPoint?: string;
|
|
125
|
+
firstRowAsNames: boolean;
|
|
126
|
+
/**
|
|
127
|
+
* A function to parse string representations of dates into JavaScript
|
|
128
|
+
* timestamps. If not set, the default implementation will be used.
|
|
129
|
+
*/
|
|
130
|
+
parseDate?: DataConverter.ParseDateFunction;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* A function to parse string representations of dates
|
|
134
|
+
* into JavaScript timestamps.
|
|
135
|
+
*/
|
|
136
|
+
interface ParseDateFunction {
|
|
137
|
+
(dateValue: string): number;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Contains supported types to convert values from and to.
|
|
141
|
+
*/
|
|
142
|
+
type Type = (boolean | null | number | string | DataTable | Date | undefined);
|
|
143
|
+
/**
|
|
144
|
+
* Options of the DataConverter.
|
|
145
|
+
*/
|
|
146
|
+
type UserOptions = Partial<Options>;
|
|
147
|
+
/**
|
|
148
|
+
* Registry as a record object with connector names and their class.
|
|
149
|
+
*/
|
|
150
|
+
const types: DataConverterTypes;
|
|
151
|
+
/**
|
|
152
|
+
* Adds a converter class to the registry.
|
|
153
|
+
*
|
|
154
|
+
* @private
|
|
155
|
+
*
|
|
156
|
+
* @param {string} key
|
|
157
|
+
* Registry key of the converter class.
|
|
158
|
+
*
|
|
159
|
+
* @param {DataConverterTypes} DataConverterClass
|
|
160
|
+
* Connector class (aka class constructor) to register.
|
|
161
|
+
*
|
|
162
|
+
* @return {boolean}
|
|
163
|
+
* Returns true, if the registration was successful. False is returned, if
|
|
164
|
+
* their is already a converter registered with this key.
|
|
165
|
+
*/
|
|
166
|
+
function registerType<T extends keyof DataConverterTypes>(key: T, DataConverterClass: DataConverterTypes[T]): boolean;
|
|
167
|
+
}
|
|
168
|
+
export default DataConverter;
|