@splunk/visualizations 28.5.3 → 28.7.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/Area/Area.d.ts.map +1 -1
- package/Area/areaUtils.d.ts +1 -1
- package/Area/areaUtils.d.ts.map +1 -1
- package/Area/config.d.ts.map +1 -1
- package/Area.config.js +93 -25
- package/Area.config.js.map +3 -3
- package/Area.js +708 -319
- package/Area.js.map +4 -4
- package/Bar/Bar.d.ts.map +1 -1
- package/Bar.config.js +81 -24
- package/Bar.config.js.map +3 -3
- package/Bar.js +528 -297
- package/Bar.js.map +4 -4
- package/Bubble.config.js +80 -23
- package/Bubble.config.js.map +2 -2
- package/Bubble.js +375 -208
- package/Bubble.js.map +4 -4
- package/CHANGELOG.external.md +75 -60
- package/ChoroplethSvg/PureChoroplethSvg/PureChoroplethSvg.d.ts +1 -0
- package/ChoroplethSvg/PureChoroplethSvg/PureChoroplethSvg.d.ts.map +1 -1
- package/ChoroplethSvg/PureChoroplethSvg/SvgChoroplethDynamic.d.ts +12 -25
- package/ChoroplethSvg/PureChoroplethSvg/SvgChoroplethDynamic.d.ts.map +1 -1
- package/ChoroplethSvg/PureChoroplethSvg/SvgMutator.d.ts +11 -4
- package/ChoroplethSvg/PureChoroplethSvg/SvgMutator.d.ts.map +1 -1
- package/ChoroplethSvg.js +1133 -253
- package/ChoroplethSvg.js.map +4 -4
- package/Column/Column.d.ts.map +1 -1
- package/Column.config.js +81 -24
- package/Column.config.js.map +3 -3
- package/Column.js +531 -300
- package/Column.js.map +4 -4
- package/Ellipse.config.js +1 -1
- package/Ellipse.config.js.map +2 -2
- package/Ellipse.js +277 -161
- package/Ellipse.js.map +4 -4
- package/Events/PureEvents/FieldSummaryTooltip.d.ts +8 -31
- package/Events/PureEvents/FieldSummaryTooltip.d.ts.map +1 -1
- package/Events/PureEvents/PureEvents.d.ts.map +1 -1
- package/Events/PureEvents/TimeControlsPopover.d.ts +6 -25
- package/Events/PureEvents/TimeControlsPopover.d.ts.map +1 -1
- package/Events/config.d.ts.map +1 -1
- package/Events.config.js +13 -3
- package/Events.config.js.map +2 -2
- package/Events.js +355 -293
- package/Events.js.map +4 -4
- package/FillerGauge/FillerGauge.d.ts.map +1 -1
- package/FillerGauge/config.d.ts.map +1 -1
- package/FillerGauge.config.js +76 -24
- package/FillerGauge.config.js.map +2 -2
- package/FillerGauge.js +512 -271
- package/FillerGauge.js.map +4 -4
- package/Image/config.d.ts.map +1 -1
- package/Image.config.js +7 -0
- package/Image.config.js.map +2 -2
- package/Image.js +282 -149
- package/Image.js.map +4 -4
- package/LICENSE +13 -0
- package/Line/Line.d.ts.map +1 -1
- package/Line/config.d.ts.map +1 -1
- package/Line/lineUtils.d.ts.map +1 -1
- package/Line/mockdata/LineData.d.ts +21 -0
- package/Line/mockdata/LineData.d.ts.map +1 -1
- package/Line.config.js +86 -25
- package/Line.config.js.map +3 -3
- package/Line.js +638 -382
- package/Line.js.map +4 -4
- package/LinkGraph/PureLinkGraph/PureLinkGraph.d.ts +47 -73
- package/LinkGraph/PureLinkGraph/PureLinkGraph.d.ts.map +1 -1
- package/LinkGraph/PureLinkGraph/PureLinkGraphUtils.d.ts +11 -2
- package/LinkGraph/PureLinkGraph/PureLinkGraphUtils.d.ts.map +1 -1
- package/LinkGraph/PureLinkGraph/components/Graph.d.ts +5 -5
- package/LinkGraph/PureLinkGraph/components/Node.d.ts +2 -2
- package/LinkGraph/PureLinkGraph/components/Nodes.d.ts +2 -2
- package/LinkGraph.js +886 -759
- package/LinkGraph.js.map +4 -4
- package/Map/Map.d.ts +1 -0
- package/Map/Map.d.ts.map +1 -1
- package/Map/PureMap/BubbleLayer.d.ts +22 -4
- package/Map/PureMap/BubbleLayer.d.ts.map +1 -1
- package/Map/PureMap/ChoroplethLayer.d.ts +9 -1
- package/Map/PureMap/ChoroplethLayer.d.ts.map +1 -1
- package/Map/PureMap/ClusterLayer.d.ts +3 -1
- package/Map/PureMap/ClusterLayer.d.ts.map +1 -1
- package/Map/PureMap/LocalChoroplethLayer.d.ts +1 -0
- package/Map/PureMap/LocalChoroplethLayer.d.ts.map +1 -1
- package/Map/PureMap/MapContext.d.ts +13 -0
- package/Map/PureMap/MapContext.d.ts.map +1 -0
- package/Map/PureMap/MarkerLayer.d.ts +19 -2
- package/Map/PureMap/MarkerLayer.d.ts.map +1 -1
- package/Map/PureMap/MarkerWrapper.d.ts +3 -2
- package/Map/PureMap/MarkerWrapper.d.ts.map +1 -1
- package/Map/PureMap/PureMap.d.ts +1 -0
- package/Map/PureMap/PureMap.d.ts.map +1 -1
- package/Map/PureMap/PureMapContainer.d.ts.map +1 -1
- package/Map/PureMap/Tooltip.d.ts +6 -1
- package/Map/PureMap/Tooltip.d.ts.map +1 -1
- package/Map/PureMap/keyboardConstants.d.ts +11 -0
- package/Map/PureMap/keyboardConstants.d.ts.map +1 -0
- package/Map/PureMap/useRovingTabindex.d.ts +18 -0
- package/Map/PureMap/useRovingTabindex.d.ts.map +1 -0
- package/Map/config.d.ts.map +1 -1
- package/Map.config.js +4 -1
- package/Map.config.js.map +2 -2
- package/Map.js +1594 -628
- package/Map.js.map +4 -4
- package/Markdown/Markdown.d.ts.map +1 -1
- package/Markdown.config.js.map +1 -1
- package/Markdown.js +304 -161
- package/Markdown.js.map +4 -4
- package/MarkerGauge/MarkerGauge.d.ts +1 -47
- package/MarkerGauge/MarkerGauge.d.ts.map +1 -1
- package/MarkerGauge/PureMarkerGauge/MarkerGauge.d.ts +22 -68
- package/MarkerGauge/PureMarkerGauge/MarkerGauge.d.ts.map +1 -1
- package/MarkerGauge/config.d.ts.map +1 -1
- package/MarkerGauge.config.js +75 -23
- package/MarkerGauge.config.js.map +2 -2
- package/MarkerGauge.js +560 -375
- package/MarkerGauge.js.map +4 -4
- package/NetworkGraph/NetworkGraph.d.ts +2 -5
- package/NetworkGraph/NetworkGraph.d.ts.map +1 -1
- package/NetworkGraph/PureNetworkGraph/PureNetworkGraph.d.ts.map +1 -1
- package/NetworkGraph/PureNetworkGraph/components/NetworkGraphSvg.d.ts +1 -0
- package/NetworkGraph/PureNetworkGraph/components/NetworkGraphSvg.d.ts.map +1 -1
- package/NetworkGraph/PureNetworkGraph/components/Node.d.ts +1 -0
- package/NetworkGraph/PureNetworkGraph/components/Node.d.ts.map +1 -1
- package/NetworkGraph/PureNetworkGraph/components/Tooltip.d.ts +1 -1
- package/NetworkGraph/PureNetworkGraph/components/Tooltip.d.ts.map +1 -1
- package/NetworkGraph/PureNetworkGraph/components/ZoomControls.d.ts +1 -0
- package/NetworkGraph/PureNetworkGraph/components/ZoomControls.d.ts.map +1 -1
- package/NetworkGraph/PureNetworkGraph/utils/networkGraphUtils.d.ts +23 -0
- package/NetworkGraph/PureNetworkGraph/utils/networkGraphUtils.d.ts.map +1 -1
- package/NetworkGraph.config.js +2 -0
- package/NetworkGraph.config.js.map +2 -2
- package/NetworkGraph.js +895 -455
- package/NetworkGraph.js.map +4 -4
- package/ParallelCoordinates.config.js.map +1 -1
- package/ParallelCoordinates.js +288 -172
- package/ParallelCoordinates.js.map +4 -4
- package/Pie/Pie.d.ts.map +1 -1
- package/Pie/pieUtils.d.ts +2 -2
- package/Pie.config.js +74 -22
- package/Pie.config.js.map +2 -2
- package/Pie.js +522 -296
- package/Pie.js.map +4 -4
- package/ProcessTree/ProcessTree.d.ts +23 -0
- package/ProcessTree/ProcessTree.d.ts.map +1 -0
- package/ProcessTree/PureProcessTree/PureProcessTree.d.ts +33 -0
- package/ProcessTree/PureProcessTree/PureProcessTree.d.ts.map +1 -0
- package/ProcessTree/PureProcessTree/components/DirectionalBytes.d.ts +8 -0
- package/ProcessTree/PureProcessTree/components/DirectionalBytes.d.ts.map +1 -0
- package/ProcessTree/PureProcessTree/components/ProcessTreeLeftPanel.d.ts +46 -0
- package/ProcessTree/PureProcessTree/components/ProcessTreeLeftPanel.d.ts.map +1 -0
- package/ProcessTree/PureProcessTree/components/ProcessTreeRightPanel.d.ts +20 -0
- package/ProcessTree/PureProcessTree/components/ProcessTreeRightPanel.d.ts.map +1 -0
- package/ProcessTree/PureProcessTree/hooks/useProcessTreeExpansionState.d.ts +20 -0
- package/ProcessTree/PureProcessTree/hooks/useProcessTreeExpansionState.d.ts.map +1 -0
- package/ProcessTree/PureProcessTree/hooks/useProcessTreeGraphData.d.ts +46 -0
- package/ProcessTree/PureProcessTree/hooks/useProcessTreeGraphData.d.ts.map +1 -0
- package/ProcessTree/PureProcessTree/hooks/useProcessTreeLinkOverlay.d.ts +23 -0
- package/ProcessTree/PureProcessTree/hooks/useProcessTreeLinkOverlay.d.ts.map +1 -0
- package/ProcessTree/PureProcessTree/mockdata/data.d.ts +235 -0
- package/ProcessTree/PureProcessTree/mockdata/data.d.ts.map +1 -0
- package/ProcessTree/PureProcessTree/utils/iconLoader.d.ts +9 -0
- package/ProcessTree/PureProcessTree/utils/iconLoader.d.ts.map +1 -0
- package/ProcessTree/PureProcessTree/utils/processTreeLinkOverlayUtils.d.ts +36 -0
- package/ProcessTree/PureProcessTree/utils/processTreeLinkOverlayUtils.d.ts.map +1 -0
- package/ProcessTree/PureProcessTree/utils/processTreeUtils.d.ts +82 -0
- package/ProcessTree/PureProcessTree/utils/processTreeUtils.d.ts.map +1 -0
- package/ProcessTree/config.d.ts +4 -0
- package/ProcessTree/config.d.ts.map +1 -0
- package/ProcessTree/index.d.ts +3 -0
- package/ProcessTree/index.d.ts.map +1 -0
- package/ProcessTree.config.js +192 -0
- package/ProcessTree.config.js.map +7 -0
- package/ProcessTree.js +5128 -0
- package/ProcessTree.js.map +7 -0
- package/Punchcard/Punchcard.d.ts +1 -5
- package/Punchcard/Punchcard.d.ts.map +1 -1
- package/Punchcard/PurePunchcard/Punchcard.d.ts +28 -32
- package/Punchcard/PurePunchcard/Punchcard.d.ts.map +1 -1
- package/Punchcard/PurePunchcard/src/PunchcardAxis.d.ts +7 -12
- package/Punchcard/PurePunchcard/src/PunchcardAxis.d.ts.map +1 -1
- package/Punchcard/PurePunchcard/src/PunchcardBubble.d.ts +14 -19
- package/Punchcard/PurePunchcard/src/PunchcardBubble.d.ts.map +1 -1
- package/Punchcard/PurePunchcard/src/PunchcardChartArea.d.ts +22 -27
- package/Punchcard/PurePunchcard/src/PunchcardChartArea.d.ts.map +1 -1
- package/Punchcard/PurePunchcard/src/PunchcardGridLines.d.ts +3 -8
- package/Punchcard/PurePunchcard/src/PunchcardGridLines.d.ts.map +1 -1
- package/Punchcard/PurePunchcard/src/PunchcardLegend.d.ts +9 -14
- package/Punchcard/PurePunchcard/src/PunchcardLegend.d.ts.map +1 -1
- package/Punchcard/PurePunchcard/src/PunchcardRow.d.ts.map +1 -1
- package/Punchcard.config.js.map +1 -1
- package/Punchcard.js +444 -631
- package/Punchcard.js.map +4 -4
- package/README.md +2 -0
- package/Rectangle.config.js +1 -1
- package/Rectangle.config.js.map +2 -2
- package/Rectangle.js +289 -173
- package/Rectangle.js.map +4 -4
- package/RichText/PureRichText/Editor/EditorPanel.d.ts +20 -0
- package/RichText/PureRichText/Editor/EditorPanel.d.ts.map +1 -0
- package/RichText/PureRichText/Editor/EditorPanelStyles.d.ts +17 -0
- package/RichText/PureRichText/Editor/EditorPanelStyles.d.ts.map +1 -0
- package/RichText/PureRichText/Editor/FontSelector.d.ts +15 -0
- package/RichText/PureRichText/Editor/FontSelector.d.ts.map +1 -0
- package/RichText/PureRichText/Editor/FormatButton.d.ts +23 -0
- package/RichText/PureRichText/Editor/FormatButton.d.ts.map +1 -0
- package/RichText/PureRichText/Editor/editorPanelUtils.d.ts +19 -0
- package/RichText/PureRichText/Editor/editorPanelUtils.d.ts.map +1 -0
- package/RichText/PureRichText/Editor/hooks/useLineSpacing.d.ts +11 -0
- package/RichText/PureRichText/Editor/hooks/useLineSpacing.d.ts.map +1 -0
- package/RichText/PureRichText/Editor/hooks/useLinkHandlers.d.ts +26 -0
- package/RichText/PureRichText/Editor/hooks/useLinkHandlers.d.ts.map +1 -0
- package/RichText/PureRichText/Editor/index.d.ts +9 -0
- package/RichText/PureRichText/Editor/index.d.ts.map +1 -0
- package/RichText/PureRichText/InnerEditor.d.ts +41 -0
- package/RichText/PureRichText/InnerEditor.d.ts.map +1 -0
- package/RichText/PureRichText/PureRichText.d.ts +19 -0
- package/RichText/PureRichText/PureRichText.d.ts.map +1 -0
- package/RichText/PureRichText/PureRichTextContext.d.ts +64 -0
- package/RichText/PureRichText/PureRichTextContext.d.ts.map +1 -0
- package/RichText/PureRichText/RichTextStyles.d.ts +25 -0
- package/RichText/PureRichText/RichTextStyles.d.ts.map +1 -0
- package/RichText/PureRichText/activeInstance.d.ts +23 -0
- package/RichText/PureRichText/activeInstance.d.ts.map +1 -0
- package/RichText/PureRichText/config.d.ts +17 -0
- package/RichText/PureRichText/config.d.ts.map +1 -0
- package/RichText/PureRichText/hooks/index.d.ts +12 -0
- package/RichText/PureRichText/hooks/index.d.ts.map +1 -0
- package/RichText/PureRichText/hooks/useContentSave.d.ts +25 -0
- package/RichText/PureRichText/hooks/useContentSave.d.ts.map +1 -0
- package/RichText/PureRichText/hooks/useContentSync.d.ts +28 -0
- package/RichText/PureRichText/hooks/useContentSync.d.ts.map +1 -0
- package/RichText/PureRichText/hooks/useDashboardKeyboardNav.d.ts +33 -0
- package/RichText/PureRichText/hooks/useDashboardKeyboardNav.d.ts.map +1 -0
- package/RichText/PureRichText/hooks/useEditModeEffect.d.ts +10 -0
- package/RichText/PureRichText/hooks/useEditModeEffect.d.ts.map +1 -0
- package/RichText/PureRichText/hooks/useEditorSetup.d.ts +36 -0
- package/RichText/PureRichText/hooks/useEditorSetup.d.ts.map +1 -0
- package/RichText/PureRichText/hooks/useFakeHighlight.d.ts +33 -0
- package/RichText/PureRichText/hooks/useFakeHighlight.d.ts.map +1 -0
- package/RichText/PureRichText/hooks/useFocusHandlers.d.ts +35 -0
- package/RichText/PureRichText/hooks/useFocusHandlers.d.ts.map +1 -0
- package/RichText/PureRichText/hooks/useKeyboardShortcuts.d.ts +18 -0
- package/RichText/PureRichText/hooks/useKeyboardShortcuts.d.ts.map +1 -0
- package/RichText/PureRichText/hooks/useMouseHandlers.d.ts +24 -0
- package/RichText/PureRichText/hooks/useMouseHandlers.d.ts.map +1 -0
- package/RichText/PureRichText/hooks/useRichTextState.d.ts +38 -0
- package/RichText/PureRichText/hooks/useRichTextState.d.ts.map +1 -0
- package/RichText/PureRichText/hooks/useStepFontSize.d.ts +17 -0
- package/RichText/PureRichText/hooks/useStepFontSize.d.ts.map +1 -0
- package/RichText/PureRichText/hooks/useStepLineSpacing.d.ts +18 -0
- package/RichText/PureRichText/hooks/useStepLineSpacing.d.ts.map +1 -0
- package/RichText/PureRichText/hooks/useTokenMap.d.ts +45 -0
- package/RichText/PureRichText/hooks/useTokenMap.d.ts.map +1 -0
- package/RichText/PureRichText/index.d.ts +16 -0
- package/RichText/PureRichText/index.d.ts.map +1 -0
- package/RichText/PureRichText/renderers/ElementRenderer.d.ts +8 -0
- package/RichText/PureRichText/renderers/ElementRenderer.d.ts.map +1 -0
- package/RichText/PureRichText/renderers/LeafRenderer.d.ts +8 -0
- package/RichText/PureRichText/renderers/LeafRenderer.d.ts.map +1 -0
- package/RichText/PureRichText/types.d.ts +111 -0
- package/RichText/PureRichText/types.d.ts.map +1 -0
- package/RichText/PureRichText/utils/a11yUtils.d.ts +9 -0
- package/RichText/PureRichText/utils/a11yUtils.d.ts.map +1 -0
- package/RichText/PureRichText/utils/fontSize.d.ts +6 -0
- package/RichText/PureRichText/utils/fontSize.d.ts.map +1 -0
- package/RichText/PureRichText/utils/slateUtils.d.ts +99 -0
- package/RichText/PureRichText/utils/slateUtils.d.ts.map +1 -0
- package/RichText/RichText.d.ts +17 -0
- package/RichText/RichText.d.ts.map +1 -0
- package/RichText/config.d.ts +4 -0
- package/RichText/config.d.ts.map +1 -0
- package/RichText/index.d.ts +7 -0
- package/RichText/index.d.ts.map +1 -0
- package/RichText.config.js +268 -0
- package/RichText.config.js.map +7 -0
- package/RichText.js +7674 -0
- package/RichText.js.map +7 -0
- package/Sankey/PureSankey/PureSankey.d.ts.map +1 -1
- package/Sankey/PureSankey/SankeyLink.d.ts.map +1 -1
- package/Sankey/PureSankey/SankeyNode.d.ts +10 -3
- package/Sankey/PureSankey/SankeyNode.d.ts.map +1 -1
- package/Sankey/PureSankey/SankeyTooltip.d.ts.map +1 -1
- package/Sankey/PureSankey/SankeyUtils.d.ts +10 -0
- package/Sankey/PureSankey/SankeyUtils.d.ts.map +1 -1
- package/Sankey.config.js.map +1 -1
- package/Sankey.js +562 -290
- package/Sankey.js.map +4 -4
- package/Scatter/Scatter.d.ts.map +1 -1
- package/Scatter.config.js +81 -24
- package/Scatter.config.js.map +3 -3
- package/Scatter.js +528 -297
- package/Scatter.js.map +4 -4
- package/SingleValue/SingleValue.d.ts.map +1 -1
- package/SingleValue/config.d.ts.map +1 -1
- package/SingleValue.config.js +76 -24
- package/SingleValue.config.js.map +2 -2
- package/SingleValue.js +896 -779
- package/SingleValue.js.map +4 -4
- package/SingleValueBasic.js.map +1 -1
- package/SingleValueIcon/SingleValueIcon.d.ts.map +1 -1
- package/SingleValueIcon/config.d.ts.map +1 -1
- package/SingleValueIcon.config.js +76 -24
- package/SingleValueIcon.config.js.map +2 -2
- package/SingleValueIcon.js +512 -287
- package/SingleValueIcon.js.map +4 -4
- package/SingleValueRadial/PureSingleValueRadial/utils/gaugeUtils.d.ts +0 -8
- package/SingleValueRadial/PureSingleValueRadial/utils/gaugeUtils.d.ts.map +1 -1
- package/SingleValueRadial/SingleValueRadial.d.ts.map +1 -1
- package/SingleValueRadial/config.d.ts.map +1 -1
- package/SingleValueRadial.config.js +76 -24
- package/SingleValueRadial.config.js.map +2 -2
- package/SingleValueRadial.js +543 -326
- package/SingleValueRadial.js.map +4 -4
- package/SparkLine/SparkLine.d.ts +57 -0
- package/SparkLine/SparkLine.d.ts.map +1 -0
- package/SparkLine/index.d.ts +1 -1
- package/SparkLine/index.d.ts.map +1 -1
- package/SparkLine.js +384 -485
- package/SparkLine.js.map +4 -4
- package/TRELLIS.md +48 -0
- package/Table/PureTable.d.ts +1 -0
- package/Table/PureTable.d.ts.map +1 -1
- package/Table/Table.d.ts.map +1 -1
- package/Table/cells/ArrayCell.d.ts.map +1 -1
- package/Table/config.d.ts.map +1 -1
- package/Table/hooks.d.ts +1 -1
- package/Table/hooks.d.ts.map +1 -1
- package/Table/tableUtils.d.ts +14 -0
- package/Table/tableUtils.d.ts.map +1 -0
- package/Table.config.js +4 -10
- package/Table.config.js.map +2 -2
- package/Table.js +1158 -846
- package/Table.js.map +4 -4
- package/Timeline/PureTimeline/src/TimelineYAxis.d.ts.map +1 -1
- package/Timeline/PureTimeline/src/utils/timelineUtils.d.ts +5 -0
- package/Timeline/PureTimeline/src/utils/timelineUtils.d.ts.map +1 -1
- package/Timeline/Timeline.d.ts +2 -0
- package/Timeline/Timeline.d.ts.map +1 -1
- package/Timeline/config.d.ts.map +1 -1
- package/Timeline/mockdata/timelineDataSource.d.ts +34 -0
- package/Timeline/mockdata/timelineDataSource.d.ts.map +1 -1
- package/Timeline.config.js +15 -0
- package/Timeline.config.js.map +2 -2
- package/Timeline.js +348 -186
- package/Timeline.js.map +4 -4
- package/common/Charting.d.ts.map +1 -1
- package/common/Charting.js +50 -28
- package/common/Charting.js.map +2 -2
- package/common/ChartingApi.d.ts +1 -1
- package/common/ChartingApi.d.ts.map +1 -1
- package/common/ChartingApi.js.map +2 -2
- package/common/DocExampleWithVizSandbox.js.map +1 -1
- package/common/OptionsDoc.js.map +1 -1
- package/common/OverviewDoc.js.map +1 -1
- package/common/SplunkVisualization.d.ts +1 -1
- package/common/SplunkVisualization.d.ts.map +1 -1
- package/common/SplunkVisualization.js +6 -4
- package/common/SplunkVisualization.js.map +2 -2
- package/common/StyledSkipLink.d.ts +2 -0
- package/common/StyledSkipLink.d.ts.map +1 -0
- package/common/StyledSkipLink.js +81 -0
- package/common/StyledSkipLink.js.map +7 -0
- package/common/TimeSeriesChartWrapper.d.ts.map +1 -1
- package/common/TimeSeriesChartWrapper.js +228 -107
- package/common/TimeSeriesChartWrapper.js.map +4 -4
- package/common/chartingUtils.d.ts +32 -6
- package/common/chartingUtils.d.ts.map +1 -1
- package/common/chartingUtils.js +166 -39
- package/common/chartingUtils.js.map +4 -4
- package/common/components/TrellisTitle.d.ts.map +1 -1
- package/common/docUtils.js +1 -1
- package/common/docUtils.js.map +2 -2
- package/common/editorConfig/AxesChartDataDisplay.d.ts.map +1 -1
- package/common/editorConfig/AxesChartYGridAndLabels.d.ts.map +1 -1
- package/common/editorConfig/BackgroundColor.d.ts +2 -2
- package/common/editorConfig/TrellisEditors.d.ts +33 -5
- package/common/editorConfig/TrellisEditors.d.ts.map +1 -1
- package/common/hocs/mockdata/trellisData.d.ts +54 -0
- package/common/hocs/mockdata/trellisData.d.ts.map +1 -1
- package/common/hocs/withTrellis.d.ts +9 -0
- package/common/hocs/withTrellis.d.ts.map +1 -1
- package/common/hooks/useSorting.d.ts +2 -2
- package/common/hooks/useSorting.d.ts.map +1 -1
- package/common/shapeUtils.d.ts +1 -1
- package/common/shapeUtils.d.ts.map +1 -1
- package/common/shapeUtils.js.map +2 -2
- package/common/utils/dataUtils.js +2 -1
- package/common/utils/dataUtils.js.map +2 -2
- package/common/utils/focusUtils.d.ts +4 -0
- package/common/utils/focusUtils.d.ts.map +1 -0
- package/common/utils/focusUtils.js +101 -0
- package/common/utils/focusUtils.js.map +7 -0
- package/common/utils/mapUtils.js +513 -184
- package/common/utils/mapUtils.js.map +4 -4
- package/common/utils/shadowDomUtils.d.ts +2 -0
- package/common/utils/shadowDomUtils.d.ts.map +1 -0
- package/common/utils/shadowDomUtils.js +39 -0
- package/common/utils/shadowDomUtils.js.map +7 -0
- package/common/utils/singleValueUtils.js +14 -26
- package/common/utils/singleValueUtils.js.map +2 -2
- package/common/utils/trellisUtils.d.ts.map +1 -1
- package/common/utils/trellisUtils.js +76 -70
- package/common/utils/trellisUtils.js.map +2 -2
- package/common/withDashboardViz.d.ts.map +1 -1
- package/common/withDashboardViz.js +276 -151
- package/common/withDashboardViz.js.map +4 -4
- package/docs-llm/INDEX.md +118 -0
- package/docs-llm/area/examples-json.md +3854 -0
- package/docs-llm/area/examples-react.md +2816 -0
- package/docs-llm/area/options.md +97 -0
- package/docs-llm/area/overview.md +27 -0
- package/docs-llm/bar/examples-json.md +3380 -0
- package/docs-llm/bar/examples-react.md +2352 -0
- package/docs-llm/bar/options.md +89 -0
- package/docs-llm/bar/overview.md +25 -0
- package/docs-llm/bubble/examples-json.md +4082 -0
- package/docs-llm/bubble/examples-react.md +3977 -0
- package/docs-llm/bubble/options.md +62 -0
- package/docs-llm/bubble/overview.md +26 -0
- package/docs-llm/choropleth-svg/examples-json.md +397 -0
- package/docs-llm/choropleth-svg/examples-react.md +389 -0
- package/docs-llm/choropleth-svg/options.md +15 -0
- package/docs-llm/choropleth-svg/overview.md +23 -0
- package/docs-llm/column/examples-json.md +3898 -0
- package/docs-llm/column/examples-react.md +2653 -0
- package/docs-llm/column/options.md +94 -0
- package/docs-llm/column/overview.md +31 -0
- package/docs-llm/dsl/examples-json.md +43 -0
- package/docs-llm/dsl/examples-react.md +78 -0
- package/docs-llm/dsl/formatters/format-by-type-examples-json.md +58 -0
- package/docs-llm/dsl/formatters/format-by-type-examples-react.md +43 -0
- package/docs-llm/dsl/formatters/format-by-type.md +38 -0
- package/docs-llm/dsl/formatters/frame-examples-json.md +42 -0
- package/docs-llm/dsl/formatters/frame-examples-react.md +24 -0
- package/docs-llm/dsl/formatters/frame.md +6 -0
- package/docs-llm/dsl/formatters/gradient-examples-json.md +98 -0
- package/docs-llm/dsl/formatters/gradient-examples-react.md +44 -0
- package/docs-llm/dsl/formatters/gradient.md +23 -0
- package/docs-llm/dsl/formatters/lerp-examples-json.md +40 -0
- package/docs-llm/dsl/formatters/lerp-examples-react.md +28 -0
- package/docs-llm/dsl/formatters/lerp.md +19 -0
- package/docs-llm/dsl/formatters/match-value-examples-json.md +65 -0
- package/docs-llm/dsl/formatters/match-value-examples-react.md +37 -0
- package/docs-llm/dsl/formatters/match-value.md +13 -0
- package/docs-llm/dsl/formatters/max-contrast-examples-json.md +39 -0
- package/docs-llm/dsl/formatters/max-contrast-examples-react.md +27 -0
- package/docs-llm/dsl/formatters/max-contrast.md +9 -0
- package/docs-llm/dsl/formatters/multi-format-examples-json.md +67 -0
- package/docs-llm/dsl/formatters/multi-format-examples-react.md +49 -0
- package/docs-llm/dsl/formatters/multi-format.md +12 -0
- package/docs-llm/dsl/formatters/objects-examples-json.md +49 -0
- package/docs-llm/dsl/formatters/objects-examples-react.md +37 -0
- package/docs-llm/dsl/formatters/objects.md +3 -0
- package/docs-llm/dsl/formatters/pick-examples-json.md +59 -0
- package/docs-llm/dsl/formatters/pick-examples-react.md +30 -0
- package/docs-llm/dsl/formatters/pick.md +9 -0
- package/docs-llm/dsl/formatters/prefix-examples-json.md +29 -0
- package/docs-llm/dsl/formatters/prefix-examples-react.md +19 -0
- package/docs-llm/dsl/formatters/prefix.md +3 -0
- package/docs-llm/dsl/formatters/prepend-examples-json.md +51 -0
- package/docs-llm/dsl/formatters/prepend-examples-react.md +33 -0
- package/docs-llm/dsl/formatters/prepend.md +9 -0
- package/docs-llm/dsl/formatters/range-value-examples-json.md +48 -0
- package/docs-llm/dsl/formatters/range-value-examples-react.md +34 -0
- package/docs-llm/dsl/formatters/range-value.md +15 -0
- package/docs-llm/dsl/formatters/set-color-channel-examples-json.md +40 -0
- package/docs-llm/dsl/formatters/set-color-channel-examples-react.md +31 -0
- package/docs-llm/dsl/formatters/set-color-channel.md +9 -0
- package/docs-llm/dsl/formatters/suffix-examples-json.md +29 -0
- package/docs-llm/dsl/formatters/suffix-examples-react.md +19 -0
- package/docs-llm/dsl/formatters/suffix.md +3 -0
- package/docs-llm/dsl/formatters/type-examples-json.md +37 -0
- package/docs-llm/dsl/formatters/type-examples-react.md +20 -0
- package/docs-llm/dsl/formatters/type.md +3 -0
- package/docs-llm/dsl/overview.md +41 -0
- package/docs-llm/dsl/selectors/abs.md +7 -0
- package/docs-llm/dsl/selectors/ceil.md +7 -0
- package/docs-llm/dsl/selectors/data-frame-average-examples-json.md +41 -0
- package/docs-llm/dsl/selectors/data-frame-average-examples-react.md +36 -0
- package/docs-llm/dsl/selectors/data-frame-average.md +7 -0
- package/docs-llm/dsl/selectors/data-frame-count-examples-json.md +41 -0
- package/docs-llm/dsl/selectors/data-frame-count-examples-react.md +36 -0
- package/docs-llm/dsl/selectors/data-frame-count.md +7 -0
- package/docs-llm/dsl/selectors/data-frame-examples-json.md +830 -0
- package/docs-llm/dsl/selectors/data-frame-examples-react.md +929 -0
- package/docs-llm/dsl/selectors/data-frame-get-field-examples-json.md +89 -0
- package/docs-llm/dsl/selectors/data-frame-get-field-examples-react.md +124 -0
- package/docs-llm/dsl/selectors/data-frame-get-field.md +5 -0
- package/docs-llm/dsl/selectors/data-frame-get-raw-value.md +5 -0
- package/docs-llm/dsl/selectors/data-frame-get-type.md +5 -0
- package/docs-llm/dsl/selectors/data-frame-get-value.md +5 -0
- package/docs-llm/dsl/selectors/data-frame-max-examples-json.md +51 -0
- package/docs-llm/dsl/selectors/data-frame-max-examples-react.md +41 -0
- package/docs-llm/dsl/selectors/data-frame-max.md +7 -0
- package/docs-llm/dsl/selectors/data-frame-min-examples-json.md +51 -0
- package/docs-llm/dsl/selectors/data-frame-min-examples-react.md +41 -0
- package/docs-llm/dsl/selectors/data-frame-min.md +7 -0
- package/docs-llm/dsl/selectors/data-frame-percentile-examples-json.md +41 -0
- package/docs-llm/dsl/selectors/data-frame-percentile-examples-react.md +36 -0
- package/docs-llm/dsl/selectors/data-frame-percentile.md +8 -0
- package/docs-llm/dsl/selectors/data-frame-set-value.md +5 -0
- package/docs-llm/dsl/selectors/data-frame-sum-examples-json.md +51 -0
- package/docs-llm/dsl/selectors/data-frame-sum-examples-react.md +41 -0
- package/docs-llm/dsl/selectors/data-frame-sum.md +7 -0
- package/docs-llm/dsl/selectors/data-frame.md +4 -0
- package/docs-llm/dsl/selectors/data-point-get-field.md +5 -0
- package/docs-llm/dsl/selectors/data-point-get-raw-value.md +4 -0
- package/docs-llm/dsl/selectors/data-point-get-type.md +5 -0
- package/docs-llm/dsl/selectors/data-point-get-value.md +5 -0
- package/docs-llm/dsl/selectors/data-point-set-value.md +4 -0
- package/docs-llm/dsl/selectors/data-point.md +5 -0
- package/docs-llm/dsl/selectors/data-series-average.md +22 -0
- package/docs-llm/dsl/selectors/data-series-count.md +14 -0
- package/docs-llm/dsl/selectors/data-series-get-field.md +5 -0
- package/docs-llm/dsl/selectors/data-series-get-raw-value.md +4 -0
- package/docs-llm/dsl/selectors/data-series-get-type.md +5 -0
- package/docs-llm/dsl/selectors/data-series-get-value.md +4 -0
- package/docs-llm/dsl/selectors/data-series-max.md +5 -0
- package/docs-llm/dsl/selectors/data-series-min.md +5 -0
- package/docs-llm/dsl/selectors/data-series-percentile.md +17 -0
- package/docs-llm/dsl/selectors/data-series-set-value.md +4 -0
- package/docs-llm/dsl/selectors/data-series-sum.md +24 -0
- package/docs-llm/dsl/selectors/data-series.md +4 -0
- package/docs-llm/dsl/selectors/delta.md +7 -0
- package/docs-llm/dsl/selectors/divide.md +8 -0
- package/docs-llm/dsl/selectors/first-point.md +5 -0
- package/docs-llm/dsl/selectors/floor.md +7 -0
- package/docs-llm/dsl/selectors/frame-by-series-index-range-examples-json.md +89 -0
- package/docs-llm/dsl/selectors/frame-by-series-index-range-examples-react.md +88 -0
- package/docs-llm/dsl/selectors/frame-by-series-index-range.md +10 -0
- package/docs-llm/dsl/selectors/frame-by-series-indexes-examples-json.md +88 -0
- package/docs-llm/dsl/selectors/frame-by-series-indexes-examples-react.md +87 -0
- package/docs-llm/dsl/selectors/frame-by-series-indexes.md +9 -0
- package/docs-llm/dsl/selectors/frame-by-series-names-examples-json.md +89 -0
- package/docs-llm/dsl/selectors/frame-by-series-names-examples-react.md +88 -0
- package/docs-llm/dsl/selectors/frame-by-series-names-or-indexes-examples-json.md +89 -0
- package/docs-llm/dsl/selectors/frame-by-series-names-or-indexes-examples-react.md +88 -0
- package/docs-llm/dsl/selectors/frame-by-series-names-or-indexes.md +9 -0
- package/docs-llm/dsl/selectors/frame-by-series-names.md +9 -0
- package/docs-llm/dsl/selectors/frame-by-series-types-examples-json.md +89 -0
- package/docs-llm/dsl/selectors/frame-by-series-types-examples-react.md +88 -0
- package/docs-llm/dsl/selectors/frame-by-series-types.md +9 -0
- package/docs-llm/dsl/selectors/frame-without-internal-fields-examples-json.md +137 -0
- package/docs-llm/dsl/selectors/frame-without-internal-fields-examples-react.md +135 -0
- package/docs-llm/dsl/selectors/frame-without-internal-fields-except-examples-json.md +157 -0
- package/docs-llm/dsl/selectors/frame-without-internal-fields-except-examples-react.md +155 -0
- package/docs-llm/dsl/selectors/frame-without-internal-fields-except.md +21 -0
- package/docs-llm/dsl/selectors/frame-without-internal-fields.md +17 -0
- package/docs-llm/dsl/selectors/frame-without-series-names.md +8 -0
- package/docs-llm/dsl/selectors/last-point.md +5 -0
- package/docs-llm/dsl/selectors/minus.md +8 -0
- package/docs-llm/dsl/selectors/multiply.md +8 -0
- package/docs-llm/dsl/selectors/plus.md +8 -0
- package/docs-llm/dsl/selectors/point-by-index.md +6 -0
- package/docs-llm/dsl/selectors/points-by-indexes.md +6 -0
- package/docs-llm/dsl/selectors/round.md +7 -0
- package/docs-llm/dsl/selectors/series-by-index-examples-json.md +49 -0
- package/docs-llm/dsl/selectors/series-by-index-examples-react.md +39 -0
- package/docs-llm/dsl/selectors/series-by-index.md +8 -0
- package/docs-llm/dsl/selectors/series-by-name-examples-json.md +49 -0
- package/docs-llm/dsl/selectors/series-by-name-examples-react.md +39 -0
- package/docs-llm/dsl/selectors/series-by-name.md +8 -0
- package/docs-llm/dsl/selectors/series-by-prioritized-types-examples-json.md +47 -0
- package/docs-llm/dsl/selectors/series-by-prioritized-types-examples-react.md +39 -0
- package/docs-llm/dsl/selectors/series-by-prioritized-types.md +10 -0
- package/docs-llm/dsl/selectors/series-by-type-examples-json.md +49 -0
- package/docs-llm/dsl/selectors/series-by-type-examples-react.md +39 -0
- package/docs-llm/dsl/selectors/series-by-type.md +10 -0
- package/docs-llm/dsl/selectors/series-by-types.md +6 -0
- package/docs-llm/ellipse/examples-json.md +5 -0
- package/docs-llm/ellipse/examples-react.md +5 -0
- package/docs-llm/ellipse/options.md +16 -0
- package/docs-llm/ellipse/overview.md +5 -0
- package/docs-llm/events/examples-json.md +705 -0
- package/docs-llm/events/examples-react.md +536 -0
- package/docs-llm/events/options.md +18 -0
- package/docs-llm/events/overview.md +5 -0
- package/docs-llm/filler-gauge/examples-json.md +376 -0
- package/docs-llm/filler-gauge/examples-react.md +274 -0
- package/docs-llm/filler-gauge/options.md +26 -0
- package/docs-llm/filler-gauge/overview.md +5 -0
- package/docs-llm/image/examples-json.md +39 -0
- package/docs-llm/image/examples-react.md +65 -0
- package/docs-llm/image/options.md +13 -0
- package/docs-llm/image/overview.md +5 -0
- package/docs-llm/line/examples-json.md +3724 -0
- package/docs-llm/line/examples-react.md +2683 -0
- package/docs-llm/line/options.md +95 -0
- package/docs-llm/line/overview.md +29 -0
- package/docs-llm/link-graph/examples-json.md +5 -0
- package/docs-llm/link-graph/examples-react.md +5 -0
- package/docs-llm/link-graph/options.md +26 -0
- package/docs-llm/link-graph/overview.md +16 -0
- package/docs-llm/map/examples-json.md +13973 -0
- package/docs-llm/map/examples-react.md +6154 -0
- package/docs-llm/map/options.md +22 -0
- package/docs-llm/map/overview.md +32 -0
- package/docs-llm/markdown/examples-json.md +63 -0
- package/docs-llm/markdown/examples-react.md +98 -0
- package/docs-llm/markdown/options.md +17 -0
- package/docs-llm/markdown/overview.md +5 -0
- package/docs-llm/marker-gauge/examples-json.md +436 -0
- package/docs-llm/marker-gauge/examples-react.md +367 -0
- package/docs-llm/marker-gauge/options.md +26 -0
- package/docs-llm/marker-gauge/overview.md +5 -0
- package/docs-llm/network-graph/examples-json.md +8843 -0
- package/docs-llm/network-graph/examples-react.md +7339 -0
- package/docs-llm/network-graph/options.md +50 -0
- package/docs-llm/network-graph/overview.md +28 -0
- package/docs-llm/parallel-coordinates/examples-json.md +8376 -0
- package/docs-llm/parallel-coordinates/examples-react.md +2771 -0
- package/docs-llm/parallel-coordinates/options.md +14 -0
- package/docs-llm/parallel-coordinates/overview.md +22 -0
- package/docs-llm/pie/examples-json.md +851 -0
- package/docs-llm/pie/examples-react.md +606 -0
- package/docs-llm/pie/options.md +34 -0
- package/docs-llm/pie/overview.md +23 -0
- package/docs-llm/process-tree/options.md +32 -0
- package/docs-llm/punchcard/examples-json.md +6134 -0
- package/docs-llm/punchcard/examples-react.md +4562 -0
- package/docs-llm/punchcard/options.md +33 -0
- package/docs-llm/punchcard/overview.md +5 -0
- package/docs-llm/pure-rich-text/options.md +28 -0
- package/docs-llm/rectangle/examples-json.md +5 -0
- package/docs-llm/rectangle/examples-react.md +5 -0
- package/docs-llm/rectangle/options.md +19 -0
- package/docs-llm/rectangle/overview.md +5 -0
- package/docs-llm/rich-text/examples-json.md +96 -0
- package/docs-llm/rich-text/examples-react.md +119 -0
- package/docs-llm/rich-text/options.md +28 -0
- package/docs-llm/rich-text/overview.md +5 -0
- package/docs-llm/sankey/examples-json.md +844 -0
- package/docs-llm/sankey/examples-react.md +546 -0
- package/docs-llm/sankey/options.md +19 -0
- package/docs-llm/sankey/overview.md +24 -0
- package/docs-llm/scatter/examples-json.md +4012 -0
- package/docs-llm/scatter/examples-react.md +3914 -0
- package/docs-llm/scatter/options.md +68 -0
- package/docs-llm/scatter/overview.md +25 -0
- package/docs-llm/single-value/examples-json.md +2613 -0
- package/docs-llm/single-value/examples-react.md +2296 -0
- package/docs-llm/single-value/options.md +49 -0
- package/docs-llm/single-value/overview.md +23 -0
- package/docs-llm/single-value-icon/examples-json.md +1686 -0
- package/docs-llm/single-value-icon/examples-react.md +1573 -0
- package/docs-llm/single-value-icon/options.md +43 -0
- package/docs-llm/single-value-icon/overview.md +5 -0
- package/docs-llm/single-value-radial/examples-json.md +1178 -0
- package/docs-llm/single-value-radial/examples-react.md +1028 -0
- package/docs-llm/single-value-radial/options.md +41 -0
- package/docs-llm/single-value-radial/overview.md +5 -0
- package/docs-llm/table/examples-json.md +5 -0
- package/docs-llm/table/examples-react.md +5 -0
- package/docs-llm/table/options.md +25 -0
- package/docs-llm/table/overview.md +24 -0
- package/docs-llm/timeline/examples-json.md +5 -0
- package/docs-llm/timeline/examples-react.md +5 -0
- package/docs-llm/timeline/options.md +27 -0
- package/docs-llm/timeline/overview.md +24 -0
- package/package.json +39 -30
- package/LICENSE.md +0 -449
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Lerp Formatter Examples
|
|
2
|
+
|
|
3
|
+
## Example 1
|
|
4
|
+
|
|
5
|
+
```json
|
|
6
|
+
{
|
|
7
|
+
"context": {
|
|
8
|
+
"nodeSizeConfig": {
|
|
9
|
+
"inputMin": 0,
|
|
10
|
+
"inputMax": 100,
|
|
11
|
+
"outputMin": 10,
|
|
12
|
+
"outputMax": 60
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"options": {
|
|
16
|
+
"nodeValues": "> primary | seriesByName(\"nodeValues\")",
|
|
17
|
+
"nodeSize": "> nodeValues | lerp(nodeSizeConfig)"
|
|
18
|
+
},
|
|
19
|
+
"dataSources": {
|
|
20
|
+
"primary": {
|
|
21
|
+
"data": {
|
|
22
|
+
"fields": [
|
|
23
|
+
{
|
|
24
|
+
"name": "nodeValues"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"columns": [
|
|
28
|
+
[
|
|
29
|
+
0,
|
|
30
|
+
25,
|
|
31
|
+
50,
|
|
32
|
+
75,
|
|
33
|
+
100
|
|
34
|
+
]
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
```
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Lerp Formatter Examples
|
|
2
|
+
|
|
3
|
+
## Example 1
|
|
4
|
+
|
|
5
|
+
```jsx
|
|
6
|
+
<SampleViz
|
|
7
|
+
context={{
|
|
8
|
+
nodeSizeConfig: {
|
|
9
|
+
inputMin: 0,
|
|
10
|
+
inputMax: 100,
|
|
11
|
+
outputMin: 10,
|
|
12
|
+
outputMax: 60,
|
|
13
|
+
},
|
|
14
|
+
}}
|
|
15
|
+
options={{
|
|
16
|
+
nodeValues: '> primary | seriesByName("nodeValues")',
|
|
17
|
+
nodeSize: '> nodeValues | lerp(nodeSizeConfig)',
|
|
18
|
+
}}
|
|
19
|
+
dataSources={{
|
|
20
|
+
primary: {
|
|
21
|
+
data: {
|
|
22
|
+
fields: [{ name: 'nodeValues' }],
|
|
23
|
+
columns: [[0, 25, 50, 75, 100]],
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
}}
|
|
27
|
+
/>
|
|
28
|
+
```
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Lerp Formatter
|
|
2
|
+
|
|
3
|
+
Linearly maps numeric values onto a new numeric range.
|
|
4
|
+
|
|
5
|
+
Similar to the `gradient` formatter, the input domain is derived from the data (per-series or
|
|
6
|
+
DataFrame-wide) and the output is interpolated between the configured output range.
|
|
7
|
+
|
|
8
|
+
`outputMin` and `outputMax` default to `[0, 1]` when no config is provided.
|
|
9
|
+
`inputMin` and `inputMax` are derived from the input data unless provided.
|
|
10
|
+
|
|
11
|
+
## Config Object
|
|
12
|
+
* **outputMin**: `number` minimum value of the mapped output range. Defaults to `0`.
|
|
13
|
+
* **outputMax**: `number` maximum value of the mapped output range. Defaults to `1`.
|
|
14
|
+
* **inputMin**: `number` lower bound of the input domain. Optional.
|
|
15
|
+
* **inputMax**: `number` upper bound of the input domain. Optional.
|
|
16
|
+
|
|
17
|
+
If the input value is outside of `[inputMin, inputMax]`, the value is clamped to the nearest bound.
|
|
18
|
+
|
|
19
|
+
@extends AbstractFormatter<'number', 'number'>
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# MatchValue Formatter Examples
|
|
2
|
+
|
|
3
|
+
## Example 1
|
|
4
|
+
|
|
5
|
+
```json
|
|
6
|
+
{
|
|
7
|
+
"context": {
|
|
8
|
+
"colorMatches": [
|
|
9
|
+
{
|
|
10
|
+
"match": 500,
|
|
11
|
+
"value": "#FF0000"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"match": 750,
|
|
15
|
+
"value": "#00FF00"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"match": "vis*",
|
|
19
|
+
"value": "#FFFFFF"
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
"options": {
|
|
24
|
+
"colorOption": "> primary | seriesByIndex(0) | lastPoint() | matchValue(colorMatches, \"#0000FF\")",
|
|
25
|
+
"colorOption2": "> primary | seriesByIndex(1) | lastPoint() | matchValue(colorMatches, \"#0000FF\")",
|
|
26
|
+
"colorOption3": "> primary | seriesByIndex(2) | lastPoint() | matchValue(colorMatches, \"#0000FF\")"
|
|
27
|
+
},
|
|
28
|
+
"dataSources": {
|
|
29
|
+
"primary": {
|
|
30
|
+
"data": {
|
|
31
|
+
"columns": [
|
|
32
|
+
[
|
|
33
|
+
100,
|
|
34
|
+
200,
|
|
35
|
+
300,
|
|
36
|
+
400,
|
|
37
|
+
500
|
|
38
|
+
],
|
|
39
|
+
[
|
|
40
|
+
600,
|
|
41
|
+
700,
|
|
42
|
+
800,
|
|
43
|
+
900,
|
|
44
|
+
1000
|
|
45
|
+
],
|
|
46
|
+
[
|
|
47
|
+
"visual"
|
|
48
|
+
]
|
|
49
|
+
],
|
|
50
|
+
"fields": [
|
|
51
|
+
{
|
|
52
|
+
"name": "foo"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"name": "bar"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"name": "baz"
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
```
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# MatchValue Formatter Examples
|
|
2
|
+
|
|
3
|
+
## Example 1
|
|
4
|
+
|
|
5
|
+
```jsx
|
|
6
|
+
<SampleViz
|
|
7
|
+
context={{
|
|
8
|
+
colorMatches: [
|
|
9
|
+
{
|
|
10
|
+
match: 500,
|
|
11
|
+
value: '#FF0000',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
match: 750,
|
|
15
|
+
value: '#00FF00',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
match: "vis*",
|
|
19
|
+
value: '#FFFFFF',
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
}}
|
|
23
|
+
options={{
|
|
24
|
+
colorOption: '> primary | seriesByIndex(0) | lastPoint() | matchValue(colorMatches, "#0000FF")' // returns #FF0000
|
|
25
|
+
colorOption2: '> primary | seriesByIndex(1) | lastPoint() | matchValue(colorMatches, "#0000FF")' // returns #0000FF
|
|
26
|
+
colorOption3: '> primary | seriesByIndex(2) | lastPoint() | matchValue(colorMatches, "#0000FF")' // returns #FFFFFF
|
|
27
|
+
}}
|
|
28
|
+
dataSources={{
|
|
29
|
+
primary: {
|
|
30
|
+
data: {
|
|
31
|
+
columns: [[100, 200, 300, 400, 500], [600, 700, 800, 900, 1000], ["visual"]]
|
|
32
|
+
fields: [{ name: 'foo' }, { name: 'bar' }, { name: 'baz' }],
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}}
|
|
36
|
+
/>
|
|
37
|
+
```
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# MatchValue Formatter
|
|
2
|
+
|
|
3
|
+
This formatter accepts a list of potential matches and a defaultValue (if no match is found) as the config.
|
|
4
|
+
|
|
5
|
+
It maps each element in the DataSeries to find a corresponding matched value and returns the matched value if found, or the defaultValue if present.
|
|
6
|
+
Otherwise if neither are present, it returns the original value.
|
|
7
|
+
|
|
8
|
+
The asterisk (`*`) character can be used as a wildcard in match values to represent any number of characters in a string. It can be placed anywhere within the string. Matching prioritizes exact values, followed by values with more common characters.
|
|
9
|
+
If multiple match values share the same length and number of wildcards, they will be matched according to their order of entry.
|
|
10
|
+
|
|
11
|
+
For example, given the match values `["vis*, "*ual"]`, the string `"visual"` would match `"vis*"`.
|
|
12
|
+
|
|
13
|
+
@extends AbstractFormatter<DataType, DataType>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# MaxContrast Formatter Examples
|
|
2
|
+
|
|
3
|
+
## Example 1
|
|
4
|
+
|
|
5
|
+
```json
|
|
6
|
+
{
|
|
7
|
+
"context": {
|
|
8
|
+
"contrastConfig": {
|
|
9
|
+
"colors": [
|
|
10
|
+
"white",
|
|
11
|
+
"black"
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"options": {
|
|
16
|
+
"color1": "green",
|
|
17
|
+
"maxContrastOfColor1": "> color1 | maxContrast(contrastConfig)",
|
|
18
|
+
"color2": "gray",
|
|
19
|
+
"maxContrastOfColor2": "> color2 | maxContrast(contrastConfig)"
|
|
20
|
+
},
|
|
21
|
+
"dataSources": {
|
|
22
|
+
"primary": {
|
|
23
|
+
"data": {
|
|
24
|
+
"fields": [
|
|
25
|
+
{
|
|
26
|
+
"name": "foo"
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"columns": [
|
|
30
|
+
[
|
|
31
|
+
100,
|
|
32
|
+
200
|
|
33
|
+
]
|
|
34
|
+
]
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
```
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# MaxContrast Formatter Examples
|
|
2
|
+
|
|
3
|
+
## Example 1
|
|
4
|
+
|
|
5
|
+
```jsx
|
|
6
|
+
<SampleViz
|
|
7
|
+
context={{
|
|
8
|
+
contrastConfig: {
|
|
9
|
+
colors: ['white', 'black']
|
|
10
|
+
}
|
|
11
|
+
}}
|
|
12
|
+
options={{
|
|
13
|
+
color1: 'green',
|
|
14
|
+
maxContrastOfColor1: '> color1 | maxContrast(contrastConfig)', // white
|
|
15
|
+
color2: 'gray'
|
|
16
|
+
maxContrastOfColor2: '> color2 | maxContrast(contrastConfig)', // black
|
|
17
|
+
}}
|
|
18
|
+
dataSources={{
|
|
19
|
+
primary: {
|
|
20
|
+
data: {
|
|
21
|
+
fields: [{ name: 'foo' }]
|
|
22
|
+
columns: [[100, 200]]
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}}
|
|
26
|
+
/>
|
|
27
|
+
```
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# MaxContrast Formatter
|
|
2
|
+
|
|
3
|
+
MaxContrast can be used to pick the color with maxContrast.
|
|
4
|
+
|
|
5
|
+
Leverages [Chromajs.contrast](https://gka.github.io/chroma.js/#chroma-contrast) to determine contrast between color and values
|
|
6
|
+
|
|
7
|
+
## Config Object
|
|
8
|
+
* **colors**: 'string[]' array of colors to compare contrast against
|
|
9
|
+
* **default**: 'string' default color if no colors or the contrast is not found
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# MultiFormat Formatter Examples
|
|
2
|
+
|
|
3
|
+
## Example 1
|
|
4
|
+
|
|
5
|
+
```json
|
|
6
|
+
{
|
|
7
|
+
"context": {
|
|
8
|
+
"areaColorsFormat": {
|
|
9
|
+
"nameField": "pathIds",
|
|
10
|
+
"valueField": "values",
|
|
11
|
+
"formatters": {
|
|
12
|
+
"id1": {
|
|
13
|
+
"type": "matchValue",
|
|
14
|
+
"config": [
|
|
15
|
+
{
|
|
16
|
+
"match": 100,
|
|
17
|
+
"value": "#FF0000"
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
"id2": {
|
|
22
|
+
"type": "rangeValue",
|
|
23
|
+
"config": [
|
|
24
|
+
{
|
|
25
|
+
"to": 100,
|
|
26
|
+
"value": "#00FF00"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"from": 100,
|
|
30
|
+
"value": "#0000FF"
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"options": {
|
|
38
|
+
"areaIds": "> primary | seriesByName(\"pathIds\")",
|
|
39
|
+
"areaValues": "> primary | seriesByName(\"values\")",
|
|
40
|
+
"areaColors": "> primary | multiFormat(areaColorsFormat)"
|
|
41
|
+
},
|
|
42
|
+
"dataSources": {
|
|
43
|
+
"primary": {
|
|
44
|
+
"data": {
|
|
45
|
+
"columns": [
|
|
46
|
+
[
|
|
47
|
+
"id1",
|
|
48
|
+
"id2"
|
|
49
|
+
],
|
|
50
|
+
[
|
|
51
|
+
100,
|
|
52
|
+
200
|
|
53
|
+
]
|
|
54
|
+
],
|
|
55
|
+
"fields": [
|
|
56
|
+
{
|
|
57
|
+
"name": "pathIds"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"name": "values"
|
|
61
|
+
}
|
|
62
|
+
]
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
```
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# MultiFormat Formatter Examples
|
|
2
|
+
|
|
3
|
+
## Example 1
|
|
4
|
+
|
|
5
|
+
```jsx
|
|
6
|
+
<ChoroplethSvg
|
|
7
|
+
context={{
|
|
8
|
+
areaColorsFormat: {
|
|
9
|
+
nameField: 'pathIds',
|
|
10
|
+
valueField: 'values',
|
|
11
|
+
formatters: {
|
|
12
|
+
id1: {
|
|
13
|
+
type: 'matchValue',
|
|
14
|
+
config: [{
|
|
15
|
+
match: 100,
|
|
16
|
+
value: '#FF0000'
|
|
17
|
+
}]
|
|
18
|
+
},
|
|
19
|
+
id2: {
|
|
20
|
+
type: 'rangeValue',
|
|
21
|
+
config: [
|
|
22
|
+
{
|
|
23
|
+
to: 100,
|
|
24
|
+
value: '#00FF00'
|
|
25
|
+
}
|
|
26
|
+
{
|
|
27
|
+
from: 100,
|
|
28
|
+
value: '#0000FF'
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}}
|
|
35
|
+
options={{
|
|
36
|
+
areaIds: '> primary | seriesByName("pathIds")', // returns ['id1', 'id2']
|
|
37
|
+
areaValues: '> primary | seriesByName("values")', // returns [100, 200]
|
|
38
|
+
areaColors: '> primary | multiFormat(areaColorsFormat)' // returns ['#FF0000', '#0000FF']
|
|
39
|
+
}}
|
|
40
|
+
dataSources={{
|
|
41
|
+
primary: {
|
|
42
|
+
data: {
|
|
43
|
+
columns: [['id1', 'id2'], [100, 200]]
|
|
44
|
+
fields: [{ name: 'pathIds' }, { name: 'values' }]
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}}
|
|
48
|
+
/>
|
|
49
|
+
```
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# MultiFormat Formatter
|
|
2
|
+
|
|
3
|
+
Formatter which accepts a config object containing a map of field-specific formatters.
|
|
4
|
+
The field-specific formatter is used to evaluate each fields' corresponding values.
|
|
5
|
+
|
|
6
|
+
The three required fields are as follows:
|
|
7
|
+
|
|
8
|
+
- `nameField`, which denotes the list of keys with custom formatters to be applied against
|
|
9
|
+
|
|
10
|
+
- `valueField`, which denotes the field to derive the values from
|
|
11
|
+
|
|
12
|
+
- `formatter1. which is an object that requires the `type` of formatter and the specific required for the specified formatter.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Objects Formatter Examples
|
|
2
|
+
|
|
3
|
+
## Example 1
|
|
4
|
+
|
|
5
|
+
```json
|
|
6
|
+
{
|
|
7
|
+
"context": {
|
|
8
|
+
"staticOptions": [
|
|
9
|
+
[
|
|
10
|
+
"All Users"
|
|
11
|
+
],
|
|
12
|
+
[
|
|
13
|
+
"*"
|
|
14
|
+
]
|
|
15
|
+
],
|
|
16
|
+
"field1": "> primary | seriesByName(\"users\") | renameSeries(\"label\")",
|
|
17
|
+
"field2": "> primary | seriesByName(\"ids\") | renameSeries(\"value\")"
|
|
18
|
+
},
|
|
19
|
+
"options": {
|
|
20
|
+
"items": "> frame(field1, field2) | prepend(staticOptions) | objects()"
|
|
21
|
+
},
|
|
22
|
+
"dataSources": {
|
|
23
|
+
"primary": {
|
|
24
|
+
"data": {
|
|
25
|
+
"fields": [
|
|
26
|
+
{
|
|
27
|
+
"name": "users"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"name": "ids"
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"columns": [
|
|
34
|
+
[
|
|
35
|
+
"jane doe",
|
|
36
|
+
"joe schmo",
|
|
37
|
+
"jack schmidt"
|
|
38
|
+
],
|
|
39
|
+
[
|
|
40
|
+
"jdoe",
|
|
41
|
+
"jschmo",
|
|
42
|
+
"jschmidt"
|
|
43
|
+
]
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
```
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Objects Formatter Examples
|
|
2
|
+
|
|
3
|
+
## Example 1
|
|
4
|
+
|
|
5
|
+
```jsx
|
|
6
|
+
// UDF inputs
|
|
7
|
+
{
|
|
8
|
+
"inputs": {
|
|
9
|
+
"input1": {
|
|
10
|
+
"context": {
|
|
11
|
+
"staticOptions": [["All Users"], ["*"]],
|
|
12
|
+
"field1": "> primary | seriesByName(\"users\") | renameSeries(\"label\")",
|
|
13
|
+
"field2": "> primary | seriesByName(\"ids\") | renameSeries(\"value\")"",
|
|
14
|
+
},
|
|
15
|
+
"type": "input.multiselect",
|
|
16
|
+
"options": {
|
|
17
|
+
"items": "> frame(field1, field2) | prepend(staticOptions) | objects()"
|
|
18
|
+
// returns [
|
|
19
|
+
// { label: 'All users', value: '*' },
|
|
20
|
+
// { label: 'jane doe', value: 'jdoe' },
|
|
21
|
+
// { label: 'joe schmo', value: 'jschmo' },
|
|
22
|
+
// { label: 'jack schmidt', value: 'jschmidt' },
|
|
23
|
+
// ]
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
"dataSources": {
|
|
27
|
+
"primary": {
|
|
28
|
+
"data": {
|
|
29
|
+
"fields": [{ "name": 'users' } , { "name": "ids" } ],
|
|
30
|
+
"columns": [[ "jane doe", "joe schmo", "jack schmidt"], ["jdoe", "jschmo", "jschmidt"]]
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
```
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Pick Formatter Examples
|
|
2
|
+
|
|
3
|
+
## Example 1
|
|
4
|
+
|
|
5
|
+
```json
|
|
6
|
+
{
|
|
7
|
+
"context": {
|
|
8
|
+
"mapConfig": {
|
|
9
|
+
"bar": "barLabel",
|
|
10
|
+
"foo": "fooLabel"
|
|
11
|
+
},
|
|
12
|
+
"rowBackgroundColors": [
|
|
13
|
+
"#FF0000",
|
|
14
|
+
"#00FF00",
|
|
15
|
+
"#0000FF"
|
|
16
|
+
],
|
|
17
|
+
"rowTextColors": [
|
|
18
|
+
"#110000",
|
|
19
|
+
"#000011"
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
"options": {
|
|
23
|
+
"rowBackgroundColor": "> primary | seriesByIndex(0) | pick(rowBackgroundColors)",
|
|
24
|
+
"rowTextColor": "> primary | seriesByIndex(0) | pick(rowTextColors)",
|
|
25
|
+
"barOption": "> primary | seriesByIndex(1) | lastPoint() | pick(mapConfig)",
|
|
26
|
+
"fooOption": "> primary | seriesByIndex(0) | lastPoint() | pick(mapConfig)"
|
|
27
|
+
},
|
|
28
|
+
"dataSources": {
|
|
29
|
+
"primary": {
|
|
30
|
+
"data": {
|
|
31
|
+
"columns": [
|
|
32
|
+
[
|
|
33
|
+
100,
|
|
34
|
+
200,
|
|
35
|
+
300,
|
|
36
|
+
400,
|
|
37
|
+
500
|
|
38
|
+
],
|
|
39
|
+
[
|
|
40
|
+
600,
|
|
41
|
+
700,
|
|
42
|
+
800,
|
|
43
|
+
900,
|
|
44
|
+
1000
|
|
45
|
+
]
|
|
46
|
+
],
|
|
47
|
+
"fields": [
|
|
48
|
+
{
|
|
49
|
+
"name": "foo"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"name": "bar"
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
```
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Pick Formatter Examples
|
|
2
|
+
|
|
3
|
+
## Example 1
|
|
4
|
+
|
|
5
|
+
```jsx
|
|
6
|
+
<SampleViz
|
|
7
|
+
context={{
|
|
8
|
+
mapConfig: {
|
|
9
|
+
bar: 'barLabel',
|
|
10
|
+
foo: 'fooLabel',
|
|
11
|
+
},
|
|
12
|
+
rowBackgroundColors: ['#FF0000', '#00FF00', '#0000FF'],
|
|
13
|
+
rowTextColors: ['#110000', '#000011'],
|
|
14
|
+
}}
|
|
15
|
+
options={{
|
|
16
|
+
rowBackgroundColor: '> primary | seriesByIndex(0) | pick(rowBackgroundColors)', // returns ['#FF0000', '#00FF00', '#0000FF', '#FF0000', '#0000FF']
|
|
17
|
+
rowTextColor: '> primary | seriesByIndex(0) | pick(rowTextColors)', // returns ['#110000', '#000011', '#110000', '#000011', '#110000']
|
|
18
|
+
barOption: '> primary | seriesByIndex(1) | lastPoint() | pick(mapConfig)', // returns 'barLabel'
|
|
19
|
+
fooOption: '> primary | seriesByIndex(0) | lastPoint() | pick(mapConfig)', // returns 'fooLabel'
|
|
20
|
+
}}
|
|
21
|
+
dataSources={{
|
|
22
|
+
primary: {
|
|
23
|
+
data: {
|
|
24
|
+
columns: [[100, 200, 300, 400, 500], [600, 700, 800, 900, 1000]]
|
|
25
|
+
fields: [{ name: 'foo' }, { name: 'bar' }],
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}}
|
|
29
|
+
/>
|
|
30
|
+
```
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Pick Formatter
|
|
2
|
+
|
|
3
|
+
Formatter which can accept a map or array config.
|
|
4
|
+
|
|
5
|
+
If a map is provided, it will use the DataPoint's field name to pick the corresponding entry in the config.
|
|
6
|
+
|
|
7
|
+
If an array is provided, it cycles through the array of values passed in via the config n times (where n = DataSeries.length) and returns this as the output.
|
|
8
|
+
|
|
9
|
+
For example, if the config contains 2 elements and the DataSeries contains 10 elements, it will loop through the config 5 times, alternating between which element is appended to the output.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Prefix Formatter Examples
|
|
2
|
+
|
|
3
|
+
## Example 1
|
|
4
|
+
|
|
5
|
+
```json
|
|
6
|
+
{
|
|
7
|
+
"context": {},
|
|
8
|
+
"options": {
|
|
9
|
+
"textOption": "> primary | seriesByName(\"foo\") | lastPoint() | prefix(\"bar\")"
|
|
10
|
+
},
|
|
11
|
+
"dataSources": {
|
|
12
|
+
"primary": {
|
|
13
|
+
"data": {
|
|
14
|
+
"fields": [
|
|
15
|
+
{
|
|
16
|
+
"name": "foo"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"columns": [
|
|
20
|
+
[
|
|
21
|
+
100,
|
|
22
|
+
200
|
|
23
|
+
]
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
```
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Prefix Formatter Examples
|
|
2
|
+
|
|
3
|
+
## Example 1
|
|
4
|
+
|
|
5
|
+
```jsx
|
|
6
|
+
<SampleViz
|
|
7
|
+
options={{
|
|
8
|
+
textOption: '> primary | seriesByName("foo") | lastPoint() | prefix("bar")' // returns "bar100"
|
|
9
|
+
}}
|
|
10
|
+
dataSources={{
|
|
11
|
+
primary: {
|
|
12
|
+
data: {
|
|
13
|
+
fields: [{ name: 'foo' }]
|
|
14
|
+
columns: [[100, 200]]
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}}
|
|
18
|
+
/>
|
|
19
|
+
```
|