@artsy/palette-charts 39.3.0-canary.1417.31465.0 → 39.3.0-canary.20ffe4c1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/elements/BarChart/Bar.d.ts +24 -0
  2. package/dist/elements/BarChart/Bar.js +149 -0
  3. package/dist/elements/BarChart/Bar.js.map +1 -0
  4. package/dist/elements/BarChart/BarChart.d.ts +21 -0
  5. package/dist/elements/BarChart/BarChart.js +160 -0
  6. package/dist/elements/BarChart/BarChart.js.map +1 -0
  7. package/dist/elements/BarChart/BarChart.story.d.ts +6 -0
  8. package/dist/elements/BarChart/BarChart.story.js +154 -0
  9. package/dist/elements/BarChart/BarChart.story.js.map +1 -0
  10. package/dist/elements/BarChart/index.d.ts +2 -0
  11. package/dist/elements/BarChart/index.js +28 -0
  12. package/dist/elements/BarChart/index.js.map +1 -0
  13. package/dist/elements/DataVis/ChartHoverTooltip.d.ts +13 -0
  14. package/dist/elements/DataVis/ChartHoverTooltip.js +52 -0
  15. package/dist/elements/DataVis/ChartHoverTooltip.js.map +1 -0
  16. package/dist/elements/DataVis/ChartTooltip.d.ts +23 -0
  17. package/dist/elements/DataVis/ChartTooltip.js +68 -0
  18. package/dist/elements/DataVis/ChartTooltip.js.map +1 -0
  19. package/dist/elements/DataVis/MousePositionContext.js +52 -0
  20. package/dist/elements/DataVis/MousePositionContext.js.map +1 -0
  21. package/dist/elements/DataVis/useIntersectionObserver.js +67 -0
  22. package/dist/elements/DataVis/useIntersectionObserver.js.map +1 -0
  23. package/dist/elements/DataVis/utils/SharedTypes.d.ts +10 -0
  24. package/dist/elements/DataVis/utils/SharedTypes.js +2 -0
  25. package/dist/elements/DataVis/utils/SharedTypes.js.map +1 -0
  26. package/dist/elements/DataVis/utils/useWrapperWidth.js +41 -0
  27. package/dist/elements/DataVis/utils/useWrapperWidth.js.map +1 -0
  28. package/dist/elements/DonutChart/DonutChart.d.ts +10 -0
  29. package/dist/elements/DonutChart/DonutChart.js +162 -0
  30. package/dist/elements/DonutChart/DonutChart.js.map +1 -0
  31. package/dist/elements/DonutChart/DonutChart.story.d.ts +6 -0
  32. package/dist/elements/DonutChart/DonutChart.story.js +45 -0
  33. package/dist/elements/DonutChart/DonutChart.story.js.map +1 -0
  34. package/dist/elements/DonutChart/index.d.ts +1 -0
  35. package/dist/elements/DonutChart/index.js +17 -0
  36. package/dist/elements/DonutChart/index.js.map +1 -0
  37. package/dist/elements/LineChart/Line.d.ts +8 -0
  38. package/dist/elements/LineChart/Line.js +24 -0
  39. package/dist/elements/LineChart/Line.js.map +1 -0
  40. package/dist/elements/LineChart/LineChart.d.ts +14 -0
  41. package/dist/elements/LineChart/LineChart.js +123 -0
  42. package/dist/elements/LineChart/LineChart.js.map +1 -0
  43. package/dist/elements/LineChart/LineChartSVG.d.ts +15 -0
  44. package/dist/elements/LineChart/LineChartSVG.js +84 -0
  45. package/dist/elements/LineChart/LineChartSVG.js.map +1 -0
  46. package/dist/elements/LineChart/Point.d.ts +11 -0
  47. package/dist/elements/LineChart/Point.js +29 -0
  48. package/dist/elements/LineChart/Point.js.map +1 -0
  49. package/dist/elements/LineChart/index.d.ts +1 -0
  50. package/dist/elements/LineChart/index.js +17 -0
  51. package/dist/elements/LineChart/index.js.map +1 -0
  52. package/dist/elements/index.d.ts +3 -0
  53. package/dist/elements/index.js +39 -0
  54. package/dist/elements/index.js.map +1 -0
  55. package/dist/index.d.ts +1 -0
  56. package/dist/index.js +17 -0
  57. package/dist/index.js.map +1 -0
  58. package/package.json +3 -2
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ /**
3
+ * Tooltip for bar and line charts
4
+ */
5
+ export declare const ChartHoverTooltip: ({ children }: {
6
+ children: any;
7
+ }) => React.JSX.Element;
8
+ /**
9
+ * Base component for positioning tooltips
10
+ */
11
+ export declare const BaseTooltipPositioner: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<Omit<import("styled-components").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof import("@artsy/palette").BoxProps> & import("@artsy/palette").BoxProps, "ref"> & {
12
+ ref?: ((instance: HTMLDivElement) => void) | React.RefObject<HTMLDivElement>;
13
+ }, keyof import("@artsy/palette").BoxProps> & import("@artsy/palette").BoxProps, never>> & string;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.ChartHoverTooltip = exports.BaseTooltipPositioner = void 0;
8
+ var _palette = require("@artsy/palette");
9
+ var _themeGet = require("@styled-system/theme-get");
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
12
+ var _MousePositionContext = require("./MousePositionContext");
13
+ var _templateObject;
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
18
+ var LABEL_OFFSET = 10;
19
+
20
+ /**
21
+ * Tooltip for bar and line charts
22
+ */
23
+ var ChartHoverTooltip = function ChartHoverTooltip(_ref) {
24
+ var children = _ref.children;
25
+ var ref = (0, _react.useRef)(null);
26
+ var _useContext = (0, _react.useContext)(_MousePositionContext.MousePositionContext),
27
+ x = _useContext.x,
28
+ y = _useContext.y;
29
+ if (ref.current) {
30
+ // position outside of the render loop to avoid GC churn
31
+ ref.current.style.top = y - LABEL_OFFSET - ref.current.offsetHeight + "px";
32
+ ref.current.style.left = x + "px";
33
+ }
34
+ return /*#__PURE__*/_react.default.createElement(HoverTooltipPositioner, {
35
+ ref: ref
36
+ }, children);
37
+ };
38
+ exports.ChartHoverTooltip = ChartHoverTooltip;
39
+ ChartHoverTooltip.displayName = "ChartHoverTooltip";
40
+ /**
41
+ * Base component for positioning tooltips
42
+ */
43
+ var BaseTooltipPositioner = (0, _styledComponents.default)(_palette.Flex).withConfig({
44
+ displayName: "ChartHoverTooltip__BaseTooltipPositioner",
45
+ componentId: "sc-2qa7c8-0"
46
+ })(["transform:translateX(-50%);pointer-events:none;border-radius:2px;"]);
47
+ exports.BaseTooltipPositioner = BaseTooltipPositioner;
48
+ var HoverTooltipPositioner = (0, _styledComponents.default)(BaseTooltipPositioner).withConfig({
49
+ displayName: "ChartHoverTooltip__HoverTooltipPositioner",
50
+ componentId: "sc-2qa7c8-1"
51
+ })(["", ";z-index:2;position:fixed;background-color:", ";box-shadow:", ";"], _palette.media.xs(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: none;\n "]))), (0, _themeGet.themeGet)("colors.white100"), (0, _themeGet.themeGet)("effects.dropShadow"));
52
+ //# sourceMappingURL=ChartHoverTooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartHoverTooltip.js","names":["_palette","require","_themeGet","_react","_interopRequireWildcard","_styledComponents","_interopRequireDefault","_MousePositionContext","_templateObject","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_taggedTemplateLiteral","strings","raw","slice","freeze","defineProperties","value","LABEL_OFFSET","ChartHoverTooltip","_ref","children","ref","useRef","_useContext","useContext","MousePositionContext","x","y","current","style","top","offsetHeight","left","createElement","HoverTooltipPositioner","exports","displayName","BaseTooltipPositioner","styled","Flex","withConfig","componentId","media","xs","themeGet"],"sources":["../../../src/elements/DataVis/ChartHoverTooltip.tsx"],"sourcesContent":["import { Flex, media } from \"@artsy/palette\"\nimport { themeGet } from \"@styled-system/theme-get\"\nimport React, { useContext, useRef } from \"react\"\nimport styled from \"styled-components\"\nimport { MousePositionContext } from \"./MousePositionContext\"\n\nconst LABEL_OFFSET = 10\n\n/**\n * Tooltip for bar and line charts\n */\nexport const ChartHoverTooltip = ({ children }) => {\n const ref = useRef(null)\n const { x, y } = useContext(MousePositionContext)\n if (ref.current) {\n // position outside of the render loop to avoid GC churn\n ref.current.style.top = y - LABEL_OFFSET - ref.current.offsetHeight + \"px\"\n ref.current.style.left = x + \"px\"\n }\n return <HoverTooltipPositioner ref={ref}>{children}</HoverTooltipPositioner>\n}\n\n/**\n * Base component for positioning tooltips\n */\nexport const BaseTooltipPositioner = styled(Flex)`\n transform: translateX(-50%);\n pointer-events: none;\n border-radius: 2px;\n`\n\nconst HoverTooltipPositioner = styled(BaseTooltipPositioner)`\n ${media.xs`\n display: none;\n `};\n z-index: 2;\n position: fixed;\n background-color: ${themeGet(\"colors.white100\")};\n box-shadow: ${themeGet(\"effects.dropShadow\")};\n`\n"],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { FlexProps } from "@artsy/palette";
2
+ import React from "react";
3
+ /**
4
+ * Returns tooltip component based on the type of tooltip param passed to it
5
+ * @param tooltip either a component or hash containing `title` and `description`
6
+ */
7
+ export declare const coerceTooltip: (tooltip: React.ReactNode | ChartTooltipProps) => string | number | boolean | React.JSX.Element | Iterable<React.ReactNode>;
8
+ /**
9
+ * Similart to `coerceTooltip` but without padding
10
+ * @param tooltip
11
+ */
12
+ export declare const coerceTooltipWithoutPadding: (tooltip: React.ReactNode | ChartTooltipProps) => string | number | boolean | React.JSX.Element | Iterable<React.ReactNode>;
13
+ export interface ChartTooltipProps extends FlexProps {
14
+ title: React.ReactNode;
15
+ description: React.ReactNode;
16
+ noPadding?: boolean;
17
+ }
18
+ export declare function isChartTooltipProps(obj: any): obj is ChartTooltipProps;
19
+ /**
20
+ * ChartTooltip is the default content format for a label on a BarChart.
21
+ * @param props
22
+ */
23
+ export declare const ChartTooltip: ({ title, description, noPadding, ...others }: ChartTooltipProps) => React.JSX.Element;
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.coerceTooltipWithoutPadding = exports.coerceTooltip = exports.ChartTooltip = void 0;
7
+ exports.isChartTooltipProps = isChartTooltipProps;
8
+ var _palette = require("@artsy/palette");
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
11
+ var _excluded = ["title", "description", "noPadding"];
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
14
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
15
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
16
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
17
+ var ChartTooltipWrapper = (0, _styledComponents.default)(_palette.Flex).withConfig({
18
+ displayName: "ChartTooltip__ChartTooltipWrapper",
19
+ componentId: "sc-1g8t4p3-0"
20
+ })(["text-align:center;align-items:center;flex-direction:column;white-space:nowrap;"]);
21
+
22
+ /**
23
+ * Returns tooltip component based on the type of tooltip param passed to it
24
+ * @param tooltip either a component or hash containing `title` and `description`
25
+ */
26
+ var coerceTooltip = function coerceTooltip(tooltip) {
27
+ return isChartTooltipProps(tooltip) ? /*#__PURE__*/_react.default.createElement(ChartTooltip, tooltip) : tooltip;
28
+ };
29
+
30
+ /**
31
+ * Similart to `coerceTooltip` but without padding
32
+ * @param tooltip
33
+ */
34
+ exports.coerceTooltip = coerceTooltip;
35
+ var coerceTooltipWithoutPadding = function coerceTooltipWithoutPadding(tooltip) {
36
+ return isChartTooltipProps(tooltip) ? /*#__PURE__*/_react.default.createElement(ChartTooltip, _extends({
37
+ noPadding: true
38
+ }, tooltip)) : tooltip;
39
+ };
40
+ exports.coerceTooltipWithoutPadding = coerceTooltipWithoutPadding;
41
+ // tslint:disable-next-line:completed-docs
42
+ function isChartTooltipProps(obj) {
43
+ var result = obj && _typeof(obj) === "object" && obj.hasOwnProperty("title") && obj.hasOwnProperty("description");
44
+ return result;
45
+ }
46
+
47
+ /**
48
+ * ChartTooltip is the default content format for a label on a BarChart.
49
+ * @param props
50
+ */
51
+ var ChartTooltip = function ChartTooltip(_ref) {
52
+ var title = _ref.title,
53
+ description = _ref.description,
54
+ noPadding = _ref.noPadding,
55
+ others = _objectWithoutProperties(_ref, _excluded);
56
+ return /*#__PURE__*/_react.default.createElement(ChartTooltipWrapper, _extends({
57
+ py: noPadding ? 0 : 0.5,
58
+ px: noPadding ? 0 : 1
59
+ }, others), /*#__PURE__*/_react.default.createElement(_palette.Text, {
60
+ variant: "xs"
61
+ }, title), /*#__PURE__*/_react.default.createElement(_palette.Text, {
62
+ color: "black60",
63
+ variant: "xs"
64
+ }, description));
65
+ };
66
+ exports.ChartTooltip = ChartTooltip;
67
+ ChartTooltip.displayName = "ChartTooltip";
68
+ //# sourceMappingURL=ChartTooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartTooltip.js","names":["_palette","require","_react","_interopRequireDefault","_styledComponents","_excluded","obj","__esModule","default","_objectWithoutProperties","source","excluded","target","_objectWithoutPropertiesLoose","key","i","Object","getOwnPropertySymbols","sourceSymbolKeys","length","indexOf","prototype","propertyIsEnumerable","call","sourceKeys","keys","_typeof","Symbol","iterator","constructor","_extends","assign","bind","arguments","hasOwnProperty","apply","ChartTooltipWrapper","styled","Flex","withConfig","displayName","componentId","coerceTooltip","tooltip","isChartTooltipProps","createElement","ChartTooltip","exports","coerceTooltipWithoutPadding","noPadding","result","_ref","title","description","others","py","px","Text","variant","color"],"sources":["../../../src/elements/DataVis/ChartTooltip.tsx"],"sourcesContent":["import { Flex, FlexProps, Text } from \"@artsy/palette\"\nimport React from \"react\"\nimport styled from \"styled-components\"\n\nconst ChartTooltipWrapper = styled(Flex)`\n text-align: center;\n align-items: center;\n flex-direction: column;\n white-space: nowrap;\n`\n\n/**\n * Returns tooltip component based on the type of tooltip param passed to it\n * @param tooltip either a component or hash containing `title` and `description`\n */\nexport const coerceTooltip = (tooltip: React.ReactNode | ChartTooltipProps) =>\n isChartTooltipProps(tooltip) ? <ChartTooltip {...tooltip} /> : tooltip\n\n/**\n * Similart to `coerceTooltip` but without padding\n * @param tooltip\n */\nexport const coerceTooltipWithoutPadding = (\n tooltip: React.ReactNode | ChartTooltipProps\n) =>\n isChartTooltipProps(tooltip) ? (\n <ChartTooltip noPadding {...tooltip} />\n ) : (\n tooltip\n )\n\nexport interface ChartTooltipProps extends FlexProps {\n title: React.ReactNode\n description: React.ReactNode\n noPadding?: boolean\n}\n\n// tslint:disable-next-line:completed-docs\nexport function isChartTooltipProps(obj: any): obj is ChartTooltipProps {\n const result =\n obj &&\n typeof obj === \"object\" &&\n obj.hasOwnProperty(\"title\") &&\n obj.hasOwnProperty(\"description\")\n return result\n}\n\n/**\n * ChartTooltip is the default content format for a label on a BarChart.\n * @param props\n */\nexport const ChartTooltip = ({\n title,\n description,\n noPadding,\n ...others\n}: ChartTooltipProps) => (\n <ChartTooltipWrapper\n py={noPadding ? 0 : 0.5}\n px={noPadding ? 0 : 1}\n {...others}\n >\n <Text variant=\"xs\">{title}</Text>\n\n <Text color=\"black60\" variant=\"xs\">\n {description}\n </Text>\n </ChartTooltipWrapper>\n)\n"],"mappings":";;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,iBAAA,GAAAD,sBAAA,CAAAF,OAAA;AAAsC,IAAAI,SAAA;AAAA,SAAAF,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,yBAAAC,MAAA,EAAAC,QAAA,QAAAD,MAAA,yBAAAE,MAAA,GAAAC,6BAAA,CAAAH,MAAA,EAAAC,QAAA,OAAAG,GAAA,EAAAC,CAAA,MAAAC,MAAA,CAAAC,qBAAA,QAAAC,gBAAA,GAAAF,MAAA,CAAAC,qBAAA,CAAAP,MAAA,QAAAK,CAAA,MAAAA,CAAA,GAAAG,gBAAA,CAAAC,MAAA,EAAAJ,CAAA,MAAAD,GAAA,GAAAI,gBAAA,CAAAH,CAAA,OAAAJ,QAAA,CAAAS,OAAA,CAAAN,GAAA,uBAAAE,MAAA,CAAAK,SAAA,CAAAC,oBAAA,CAAAC,IAAA,CAAAb,MAAA,EAAAI,GAAA,aAAAF,MAAA,CAAAE,GAAA,IAAAJ,MAAA,CAAAI,GAAA,cAAAF,MAAA;AAAA,SAAAC,8BAAAH,MAAA,EAAAC,QAAA,QAAAD,MAAA,yBAAAE,MAAA,WAAAY,UAAA,GAAAR,MAAA,CAAAS,IAAA,CAAAf,MAAA,OAAAI,GAAA,EAAAC,CAAA,OAAAA,CAAA,MAAAA,CAAA,GAAAS,UAAA,CAAAL,MAAA,EAAAJ,CAAA,MAAAD,GAAA,GAAAU,UAAA,CAAAT,CAAA,OAAAJ,QAAA,CAAAS,OAAA,CAAAN,GAAA,kBAAAF,MAAA,CAAAE,GAAA,IAAAJ,MAAA,CAAAI,GAAA,YAAAF,MAAA;AAAA,SAAAc,QAAApB,GAAA,sCAAAoB,OAAA,wBAAAC,MAAA,uBAAAA,MAAA,CAAAC,QAAA,aAAAtB,GAAA,kBAAAA,GAAA,gBAAAA,GAAA,WAAAA,GAAA,yBAAAqB,MAAA,IAAArB,GAAA,CAAAuB,WAAA,KAAAF,MAAA,IAAArB,GAAA,KAAAqB,MAAA,CAAAN,SAAA,qBAAAf,GAAA,KAAAoB,OAAA,CAAApB,GAAA;AAAA,SAAAwB,SAAA,IAAAA,QAAA,GAAAd,MAAA,CAAAe,MAAA,GAAAf,MAAA,CAAAe,MAAA,CAAAC,IAAA,eAAApB,MAAA,aAAAG,CAAA,MAAAA,CAAA,GAAAkB,SAAA,CAAAd,MAAA,EAAAJ,CAAA,UAAAL,MAAA,GAAAuB,SAAA,CAAAlB,CAAA,YAAAD,GAAA,IAAAJ,MAAA,QAAAM,MAAA,CAAAK,SAAA,CAAAa,cAAA,CAAAX,IAAA,CAAAb,MAAA,EAAAI,GAAA,KAAAF,MAAA,CAAAE,GAAA,IAAAJ,MAAA,CAAAI,GAAA,gBAAAF,MAAA,YAAAkB,QAAA,CAAAK,KAAA,OAAAF,SAAA;AAEtC,IAAMG,mBAAmB,GAAG,IAAAC,yBAAM,EAACC,aAAI,CAAC,CAAAC,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,sFAKvC;;AAED;AACA;AACA;AACA;AACO,IAAMC,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,OAA4C;EAAA,OACxEC,mBAAmB,CAACD,OAAO,CAAC,gBAAGzC,MAAA,CAAAM,OAAA,CAAAqC,aAAA,CAACC,YAAY,EAAKH,OAAO,CAAI,GAAGA,OAAO;AAAA;;AAExE;AACA;AACA;AACA;AAHAI,OAAA,CAAAL,aAAA,GAAAA,aAAA;AAIO,IAAMM,2BAA2B,GAAG,SAA9BA,2BAA2BA,CACtCL,OAA4C;EAAA,OAE5CC,mBAAmB,CAACD,OAAO,CAAC,gBAC1BzC,MAAA,CAAAM,OAAA,CAAAqC,aAAA,CAACC,YAAY,EAAAhB,QAAA;IAACmB,SAAS;EAAA,GAAKN,OAAO,EAAI,GAEvCA,OACD;AAAA;AAAAI,OAAA,CAAAC,2BAAA,GAAAA,2BAAA;AAQH;AACO,SAASJ,mBAAmBA,CAACtC,GAAQ,EAA4B;EACtE,IAAM4C,MAAM,GACV5C,GAAG,IACHoB,OAAA,CAAOpB,GAAG,MAAK,QAAQ,IACvBA,GAAG,CAAC4B,cAAc,CAAC,OAAO,CAAC,IAC3B5B,GAAG,CAAC4B,cAAc,CAAC,aAAa,CAAC;EACnC,OAAOgB,MAAM;AACf;;AAEA;AACA;AACA;AACA;AACO,IAAMJ,YAAY,GAAG,SAAfA,YAAYA,CAAAK,IAAA;EAAA,IACvBC,KAAK,GAAAD,IAAA,CAALC,KAAK;IACLC,WAAW,GAAAF,IAAA,CAAXE,WAAW;IACXJ,SAAS,GAAAE,IAAA,CAATF,SAAS;IACNK,MAAM,GAAA7C,wBAAA,CAAA0C,IAAA,EAAA9C,SAAA;EAAA,oBAETH,MAAA,CAAAM,OAAA,CAAAqC,aAAA,CAACT,mBAAmB,EAAAN,QAAA;IAClByB,EAAE,EAAEN,SAAS,GAAG,CAAC,GAAG,GAAI;IACxBO,EAAE,EAAEP,SAAS,GAAG,CAAC,GAAG;EAAE,GAClBK,MAAM,gBAEVpD,MAAA,CAAAM,OAAA,CAAAqC,aAAA,CAAC7C,QAAA,CAAAyD,IAAI;IAACC,OAAO,EAAC;EAAI,GAAEN,KAAK,CAAQ,eAEjClD,MAAA,CAAAM,OAAA,CAAAqC,aAAA,CAAC7C,QAAA,CAAAyD,IAAI;IAACE,KAAK,EAAC,SAAS;IAACD,OAAO,EAAC;EAAI,GAC/BL,WAAW,CACP,CACa;AAAA,CACvB;AAAAN,OAAA,CAAAD,YAAA,GAAAA,YAAA;AAjBYA,YAAY,CAAAN,WAAA"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.ProvideMousePosition = exports.MousePositionContext = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
10
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
11
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
12
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
13
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
14
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
15
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
16
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
17
+ // tslint:disable-next-line:completed-docs
18
+ var MousePositionContext = /*#__PURE__*/_react.default.createContext({
19
+ x: 0,
20
+ y: 0
21
+ });
22
+
23
+ // tslint:disable-next-line:completed-docs
24
+ exports.MousePositionContext = MousePositionContext;
25
+ var ProvideMousePosition = function ProvideMousePosition(_ref) {
26
+ var children = _ref.children;
27
+ var _useState = (0, _react.useState)({
28
+ x: 0,
29
+ y: 0
30
+ }),
31
+ _useState2 = _slicedToArray(_useState, 2),
32
+ state = _useState2[0],
33
+ setState = _useState2[1];
34
+ (0, _react.useEffect)(function () {
35
+ var setMousePosition = function setMousePosition(ev) {
36
+ setState({
37
+ x: ev.clientX,
38
+ y: ev.clientY
39
+ });
40
+ };
41
+ window.addEventListener("mousemove", setMousePosition);
42
+ return function () {
43
+ window.removeEventListener("mousemove", setMousePosition);
44
+ };
45
+ }, [false]);
46
+ return /*#__PURE__*/_react.default.createElement(MousePositionContext.Provider, {
47
+ value: state
48
+ }, children);
49
+ };
50
+ exports.ProvideMousePosition = ProvideMousePosition;
51
+ ProvideMousePosition.displayName = "ProvideMousePosition";
52
+ //# sourceMappingURL=MousePositionContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MousePositionContext.js","names":["_react","_interopRequireWildcard","require","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","o","minLen","_arrayLikeToArray","n","toString","slice","constructor","name","Array","from","test","len","length","arr2","_i","Symbol","iterator","_s","_e","_x","_r","_arr","_n","_d","next","done","push","value","err","return","isArray","MousePositionContext","React","createContext","x","y","exports","ProvideMousePosition","_ref","children","_useState","useState","_useState2","state","setState","useEffect","setMousePosition","ev","clientX","clientY","window","addEventListener","removeEventListener","createElement","Provider","displayName"],"sources":["../../../src/elements/DataVis/MousePositionContext.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\"\n\n// tslint:disable-next-line:completed-docs\nexport const MousePositionContext = React.createContext({ x: 0, y: 0 })\n\n// tslint:disable-next-line:completed-docs\nexport const ProvideMousePosition: React.FC<React.PropsWithChildren<unknown>> = ({ children }) => {\n const [state, setState] = useState({ x: 0, y: 0 })\n\n useEffect(() => {\n const setMousePosition = (ev: MouseEvent) => {\n setState({\n x: ev.clientX,\n y: ev.clientY,\n })\n }\n window.addEventListener(\"mousemove\", setMousePosition)\n return () => {\n window.removeEventListener(\"mousemove\", setMousePosition)\n }\n }, [false])\n\n return (\n <MousePositionContext.Provider value={state}>\n {children}\n </MousePositionContext.Provider>\n )\n}\n"],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useIntersectionObserver = void 0;
7
+ var _react = require("react");
8
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
9
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
10
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
11
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
12
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
13
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
14
+ // tslint:disable-next-line:completed-docs
15
+ var useIntersectionObserver = function useIntersectionObserver(_ref) {
16
+ var _ref$once = _ref.once,
17
+ once = _ref$once === void 0 ? true : _ref$once,
18
+ _ref$options = _ref.options,
19
+ options = _ref$options === void 0 ? {
20
+ threshold: 0
21
+ } : _ref$options,
22
+ onIntersection = _ref.onIntersection,
23
+ onOffIntersection = _ref.onOffIntersection;
24
+ var ref = (0, _react.useRef)(null);
25
+ var handleIntersect = function handleIntersect(entries) {
26
+ if (!observer) return;
27
+ if (once) {
28
+ var hasIntersected = entries.some(
29
+ // tslint:disable-next-line:no-shadowed-variable
30
+ function (_ref2) {
31
+ var isIntersecting = _ref2.isIntersecting;
32
+ return isIntersecting;
33
+ });
34
+ if (hasIntersected) {
35
+ onIntersection === null || onIntersection === void 0 ? void 0 : onIntersection(entries);
36
+ observer.disconnect();
37
+ } else {
38
+ onOffIntersection === null || onOffIntersection === void 0 ? void 0 : onOffIntersection(entries);
39
+ }
40
+ return;
41
+ }
42
+ var isIntersecting = entries[entries.length - 1].isIntersecting;
43
+ if (!isIntersecting) {
44
+ onOffIntersection === null || onOffIntersection === void 0 ? void 0 : onOffIntersection(entries);
45
+ return;
46
+ }
47
+ onIntersection === null || onIntersection === void 0 ? void 0 : onIntersection(entries);
48
+ };
49
+ var _useState = (0, _react.useState)(function () {
50
+ return isClientSide ? new IntersectionObserver(handleIntersect, options) : undefined;
51
+ }),
52
+ _useState2 = _slicedToArray(_useState, 1),
53
+ observer = _useState2[0];
54
+ (0, _react.useEffect)(function () {
55
+ if (!ref.current || !observer) return;
56
+ observer.observe(ref.current);
57
+ return function () {
58
+ observer.disconnect();
59
+ };
60
+ }, [ref, observer]);
61
+ return {
62
+ ref: ref
63
+ };
64
+ };
65
+ exports.useIntersectionObserver = useIntersectionObserver;
66
+ var isClientSide = typeof window !== "undefined";
67
+ //# sourceMappingURL=useIntersectionObserver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIntersectionObserver.js","names":["_react","require","_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","o","minLen","_arrayLikeToArray","n","Object","prototype","toString","call","slice","constructor","name","Array","from","test","len","length","arr2","_i","Symbol","iterator","_s","_e","_x","_r","_arr","_n","_d","next","done","push","value","err","return","isArray","useIntersectionObserver","_ref","_ref$once","once","_ref$options","options","threshold","onIntersection","onOffIntersection","ref","useRef","handleIntersect","entries","observer","hasIntersected","some","_ref2","isIntersecting","disconnect","_useState","useState","isClientSide","IntersectionObserver","undefined","_useState2","useEffect","current","observe","exports","window"],"sources":["../../../src/elements/DataVis/useIntersectionObserver.ts"],"sourcesContent":["import { RefObject, useEffect, useRef, useState } from \"react\"\n\ninterface UseIntersectionObserverProperties {\n ref?: RefObject<Element> | null\n once?: boolean\n options?: {\n threshold: number | number[]\n root?: Element\n rootMargin?: string\n }\n onIntersection?: (entries: IntersectionObserverEntry[]) => void\n onOffIntersection?: (entries: IntersectionObserverEntry[]) => void\n}\n\n// tslint:disable-next-line:completed-docs\nexport const useIntersectionObserver = ({\n once = true,\n options = { threshold: 0 },\n onIntersection,\n onOffIntersection,\n}: UseIntersectionObserverProperties) => {\n const ref = useRef<HTMLElement | null>(null)\n\n const handleIntersect = (entries: IntersectionObserverEntry[]) => {\n if (!observer) return\n\n if (once) {\n const hasIntersected = entries.some(\n // tslint:disable-next-line:no-shadowed-variable\n ({ isIntersecting }) => isIntersecting\n )\n\n if (hasIntersected) {\n onIntersection?.(entries)\n observer.disconnect()\n } else {\n onOffIntersection?.(entries)\n }\n\n return\n }\n\n const isIntersecting = entries[entries.length - 1].isIntersecting\n\n if (!isIntersecting) {\n onOffIntersection?.(entries)\n return\n }\n\n onIntersection?.(entries)\n }\n\n const [observer] = useState(() =>\n isClientSide\n ? new IntersectionObserver(handleIntersect, options)\n : undefined\n )\n\n useEffect(() => {\n if (!ref.current || !observer) return\n\n observer.observe(ref.current)\n\n return () => {\n observer.disconnect()\n }\n }, [ref, observer])\n\n return { ref }\n}\n\nconst isClientSide = typeof window !== \"undefined\"\n"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ import { ChartTooltipProps } from "../ChartTooltip";
3
+ export interface PointDescriptor {
4
+ value: number;
5
+ axisLabelX?: React.ReactNode | ChartTooltipProps;
6
+ tooltip?: React.ReactNode | ChartTooltipProps;
7
+ }
8
+ export interface ChartProps {
9
+ points: PointDescriptor[];
10
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=SharedTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SharedTypes.js","names":[],"sources":["../../../../src/elements/DataVis/utils/SharedTypes.ts"],"sourcesContent":["import { ChartTooltipProps } from \"../ChartTooltip\"\n\nexport interface PointDescriptor {\n value: number\n axisLabelX?: React.ReactNode | ChartTooltipProps\n tooltip?: React.ReactNode | ChartTooltipProps\n}\n\nexport interface ChartProps {\n points: PointDescriptor[]\n}\n"],"mappings":""}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useWrapperWidth = void 0;
7
+ var _react = require("react");
8
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
9
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
10
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
11
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
12
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
13
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
14
+ /**
15
+ * Returns width of container element
16
+ * @param ref reference to wrapper component
17
+ */
18
+ var useWrapperWidth = function useWrapperWidth(ref) {
19
+ var _useState = (0, _react.useState)(0),
20
+ _useState2 = _slicedToArray(_useState, 2),
21
+ width = _useState2[0],
22
+ setWidth = _useState2[1];
23
+ var widthCheckInterval = (0, _react.useRef)(null);
24
+ (0, _react.useEffect)(function () {
25
+ var setContainerWidth = function setContainerWidth() {
26
+ if (ref.current) {
27
+ setWidth(ref.current.getBoundingClientRect().width - 5);
28
+ }
29
+ };
30
+ setContainerWidth();
31
+ widthCheckInterval.current = setInterval(setContainerWidth, 500);
32
+ window.addEventListener("resize", setContainerWidth);
33
+ return function cleanup() {
34
+ window.removeEventListener("resize", setContainerWidth);
35
+ clearInterval(widthCheckInterval.current);
36
+ };
37
+ }, []);
38
+ return width;
39
+ };
40
+ exports.useWrapperWidth = useWrapperWidth;
41
+ //# sourceMappingURL=useWrapperWidth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWrapperWidth.js","names":["_react","require","_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","o","minLen","_arrayLikeToArray","n","Object","prototype","toString","call","slice","constructor","name","Array","from","test","len","length","arr2","_i","Symbol","iterator","_s","_e","_x","_r","_arr","_n","_d","next","done","push","value","err","return","isArray","useWrapperWidth","ref","_useState","useState","_useState2","width","setWidth","widthCheckInterval","useRef","useEffect","setContainerWidth","current","getBoundingClientRect","setInterval","window","addEventListener","cleanup","removeEventListener","clearInterval","exports"],"sources":["../../../../src/elements/DataVis/utils/useWrapperWidth.ts"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\"\n\n/**\n * Returns width of container element\n * @param ref reference to wrapper component\n */\nexport const useWrapperWidth = (ref: React.RefObject<HTMLElement>) => {\n const [width, setWidth] = useState(0)\n\n const widthCheckInterval = useRef(null)\n\n useEffect(() => {\n const setContainerWidth = () => {\n if (ref.current) {\n setWidth(ref.current.getBoundingClientRect().width - 5)\n }\n }\n\n setContainerWidth()\n\n widthCheckInterval.current = setInterval(setContainerWidth, 500)\n\n window.addEventListener(\"resize\", setContainerWidth)\n\n return function cleanup() {\n window.removeEventListener(\"resize\", setContainerWidth)\n clearInterval(widthCheckInterval.current)\n }\n }, [])\n\n return width\n}\n"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ import { ChartProps } from "../DataVis/utils/SharedTypes";
3
+ export interface DonutChartProps extends ChartProps {
4
+ margin?: number;
5
+ }
6
+ /**
7
+ * DonutChart is a component that displays data points with donut shaped arcs.
8
+ * Good for illustrating numerical proportions.
9
+ */
10
+ export declare const DonutChart: React.FC<React.PropsWithChildren<DonutChartProps>>;
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.DonutChart = void 0;
8
+ var _palette = require("@artsy/palette");
9
+ var _d3Interpolate = require("d3-interpolate");
10
+ var _d3Shape = require("d3-shape");
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
13
+ var _ChartHoverTooltip = require("../DataVis/ChartHoverTooltip");
14
+ var _ChartTooltip = require("../DataVis/ChartTooltip");
15
+ var _MousePositionContext = require("../DataVis/MousePositionContext");
16
+ var _useWrapperWidth = require("../DataVis/utils/useWrapperWidth");
17
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
20
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
21
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
22
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
23
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
24
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
25
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
26
+ var colors = ["black10", "black30", "black60"];
27
+ var MIN_CHART_SIZE = 30;
28
+ /**
29
+ * DonutChart is a component that displays data points with donut shaped arcs.
30
+ * Good for illustrating numerical proportions.
31
+ */
32
+ var DonutChart = function DonutChart(_ref) {
33
+ var points = _ref.points,
34
+ _ref$margin = _ref.margin,
35
+ margin = _ref$margin === void 0 ? (0, _palette.space)(2) : _ref$margin;
36
+ var _useState = (0, _react.useState)(-1),
37
+ _useState2 = _slicedToArray(_useState, 2),
38
+ hoverIndex = _useState2[0],
39
+ setHoverIndex = _useState2[1];
40
+ var wrapperRef = (0, _react.useRef)(null);
41
+ var width = Math.max((0, _useWrapperWidth.useWrapperWidth)(wrapperRef), MIN_CHART_SIZE);
42
+
43
+ // width of the arc is %12 of chart width
44
+ var donutWidth = width * 0.12;
45
+
46
+ // margin between chart and labels step down to 10px when chart is smaller than 230px
47
+ var donutLabelMargin = width > 230 ? (0, _palette.space)(2) : (0, _palette.space)(1);
48
+
49
+ // 2px in radians
50
+ var padAngel = Math.atan(2 / width);
51
+ var centerX = width / 2 + margin;
52
+ var centerY = width / 2 + margin;
53
+ var values = points.map(function (d) {
54
+ return d.value;
55
+ });
56
+ var angelInterpolator = (0, _d3Interpolate.interpolate)(0, 2 * Math.PI);
57
+ var arc = (0, _d3Shape.arc)().innerRadius(width / 2 - margin - donutWidth).outerRadius(width / 2 - margin).padAngle(padAngel);
58
+
59
+ // virtual donut to use its arc centroids to calculate label position
60
+ var labelArc = (0, _d3Shape.arc)().innerRadius(width / 2 - margin + donutLabelMargin).outerRadius(width / 2 - margin + donutLabelMargin);
61
+ var pie = (0, _d3Shape.pie)().value(function (d) {
62
+ return d.value;
63
+ });
64
+ var tooltip = points.map(function (point, index) {
65
+ var hover = hoverIndex === index;
66
+ return hover ? /*#__PURE__*/_react.default.createElement(_ChartHoverTooltip.ChartHoverTooltip, {
67
+ key: "".concat(index, "-hover")
68
+ }, (0, _ChartTooltip.coerceTooltip)(point.tooltip)) : null;
69
+ });
70
+ var labels = pie(points).map(function (slice, index) {
71
+ var _labelArc$centroid = labelArc.centroid(slice),
72
+ _labelArc$centroid2 = _slicedToArray(_labelArc$centroid, 2),
73
+ x = _labelArc$centroid2[0],
74
+ y = _labelArc$centroid2[1];
75
+ var axisLabelX = points[index].axisLabelX;
76
+ return axisLabelX && /*#__PURE__*/_react.default.createElement(DonutLabelContainer, {
77
+ key: index,
78
+ x: x + centerX,
79
+ y: y + centerY,
80
+ center: centerX
81
+ }, /*#__PURE__*/_react.default.createElement(_palette.Text, {
82
+ color: "black60",
83
+ variant: "xs"
84
+ }, (0, _ChartTooltip.coerceTooltipWithoutPadding)(axisLabelX)));
85
+ });
86
+ var zeroStateArc = pie([{
87
+ value: 1
88
+ }]).map(function (zeroState) {
89
+ return /*#__PURE__*/_react.default.createElement("path", {
90
+ key: "zero-state",
91
+ stroke: "none",
92
+ fill: (0, _palette.color)("black5"),
93
+ d: arc(zeroState)
94
+ });
95
+ });
96
+ var angle = angelInterpolator(1);
97
+ pie.endAngle(angle);
98
+ var slices = pie(points).map(function (datum, index) {
99
+ // d3 by default sorts slices by values. for color assignment we
100
+ // need sorted index but for hover we need original order in points
101
+ // to match with correct tooltip
102
+ var sortedIndex = datum.index;
103
+ var arcColor = (0, _palette.color)(colors[sortedIndex % colors.length]);
104
+ // avoid the first and last arc ending up the same color
105
+ if (sortedIndex === values.length - 1 && sortedIndex % colors.length === 0) {
106
+ arcColor = (0, _palette.color)(colors[1]);
107
+ }
108
+ return /*#__PURE__*/_react.default.createElement("path", {
109
+ key: index,
110
+ fill: arcColor,
111
+ d: arc(datum),
112
+ onMouseEnter: function onMouseEnter() {
113
+ return setHoverIndex(index);
114
+ },
115
+ onMouseLeave: function onMouseLeave() {
116
+ return setHoverIndex(-1);
117
+ }
118
+ });
119
+ });
120
+ return /*#__PURE__*/_react.default.createElement(_MousePositionContext.ProvideMousePosition, null, /*#__PURE__*/_react.default.createElement(_palette.Box, {
121
+ ref: wrapperRef,
122
+ position: "relative"
123
+ }, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, tooltip, width !== MIN_CHART_SIZE && labels, /*#__PURE__*/_react.default.createElement("svg", {
124
+ key: "svg",
125
+ width: width + margin,
126
+ height: width + margin
127
+ }, /*#__PURE__*/_react.default.createElement("g", {
128
+ transform: "translate(".concat(centerX, ", ").concat(centerY, ")")
129
+ }, zeroStateArc, /*#__PURE__*/_react.default.createElement("g", null, slices))))));
130
+ };
131
+ exports.DonutChart = DonutChart;
132
+ DonutChart.displayName = "DonutChart";
133
+ // to create a float:right effect for labels that are on left side (also top)
134
+ var computeLabelTranslate = function computeLabelTranslate(dim, center) {
135
+ var diffPercent = (dim - center) / center;
136
+ if (diffPercent < -0.25) {
137
+ return "-100%";
138
+ } else if (diffPercent < -0 && diffPercent > -0.25) {
139
+ return "-50%";
140
+ } else {
141
+ return "0";
142
+ }
143
+ };
144
+ var DonutLabelContainer = _styledComponents.default.div.withConfig({
145
+ displayName: "DonutChart__DonutLabelContainer",
146
+ componentId: "sc-1ieod6t-0"
147
+ })(["top:", "px;left:", "px;position:absolute;text-align:center;transform:translate( ", ",", " );white-space:nowrap;"], function (_ref2) {
148
+ var y = _ref2.y;
149
+ return y;
150
+ }, function (_ref3) {
151
+ var x = _ref3.x;
152
+ return x;
153
+ }, function (_ref4) {
154
+ var x = _ref4.x,
155
+ center = _ref4.center;
156
+ return computeLabelTranslate(x, center);
157
+ }, function (_ref5) {
158
+ var y = _ref5.y,
159
+ center = _ref5.center;
160
+ return computeLabelTranslate(y, center);
161
+ });
162
+ //# sourceMappingURL=DonutChart.js.map