@pie-lib/graphing 2.15.0-beta.2 → 2.15.0-beta.3

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 (128) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/lib/axis/arrow.js +115 -0
  3. package/lib/axis/arrow.js.map +1 -0
  4. package/lib/axis/axes.js +415 -0
  5. package/lib/axis/axes.js.map +1 -0
  6. package/lib/axis/index.js +26 -0
  7. package/lib/axis/index.js.map +1 -0
  8. package/lib/bg.js +139 -0
  9. package/lib/bg.js.map +1 -0
  10. package/lib/container/actions.js +24 -0
  11. package/lib/container/actions.js.map +1 -0
  12. package/lib/container/index.js +163 -0
  13. package/lib/container/index.js.map +1 -0
  14. package/lib/container/marks.js +27 -0
  15. package/lib/container/marks.js.map +1 -0
  16. package/lib/container/middleware.js +25 -0
  17. package/lib/container/middleware.js.map +1 -0
  18. package/lib/container/reducer.js +25 -0
  19. package/lib/container/reducer.js.map +1 -0
  20. package/lib/coordinates-label.js +109 -0
  21. package/lib/coordinates-label.js.map +1 -0
  22. package/lib/graph-with-controls.js +359 -0
  23. package/lib/graph-with-controls.js.map +1 -0
  24. package/lib/graph.js +371 -0
  25. package/lib/graph.js.map +1 -0
  26. package/lib/grid-setup.js +462 -0
  27. package/lib/grid-setup.js.map +1 -0
  28. package/lib/grid.js +176 -0
  29. package/lib/grid.js.map +1 -0
  30. package/lib/index.js +59 -0
  31. package/lib/index.js.map +1 -0
  32. package/lib/key-legend.js +246 -0
  33. package/lib/key-legend.js.map +1 -0
  34. package/lib/label-svg-icon.js +56 -0
  35. package/lib/label-svg-icon.js.map +1 -0
  36. package/lib/labels.js +299 -0
  37. package/lib/labels.js.map +1 -0
  38. package/lib/mark-label.js +321 -0
  39. package/lib/mark-label.js.map +1 -0
  40. package/lib/toggle-bar.js +336 -0
  41. package/lib/toggle-bar.js.map +1 -0
  42. package/lib/tool-menu.js +112 -0
  43. package/lib/tool-menu.js.map +1 -0
  44. package/lib/tools/absolute/component.js +35 -0
  45. package/lib/tools/absolute/component.js.map +1 -0
  46. package/lib/tools/absolute/index.js +63 -0
  47. package/lib/tools/absolute/index.js.map +1 -0
  48. package/lib/tools/circle/bg-circle.js +173 -0
  49. package/lib/tools/circle/bg-circle.js.map +1 -0
  50. package/lib/tools/circle/component.js +406 -0
  51. package/lib/tools/circle/component.js.map +1 -0
  52. package/lib/tools/circle/index.js +51 -0
  53. package/lib/tools/circle/index.js.map +1 -0
  54. package/lib/tools/exponential/component.js +34 -0
  55. package/lib/tools/exponential/component.js.map +1 -0
  56. package/lib/tools/exponential/index.js +71 -0
  57. package/lib/tools/exponential/index.js.map +1 -0
  58. package/lib/tools/index.js +99 -0
  59. package/lib/tools/index.js.map +1 -0
  60. package/lib/tools/line/component.js +103 -0
  61. package/lib/tools/line/component.js.map +1 -0
  62. package/lib/tools/line/index.js +16 -0
  63. package/lib/tools/line/index.js.map +1 -0
  64. package/lib/tools/parabola/component.js +34 -0
  65. package/lib/tools/parabola/component.js.map +1 -0
  66. package/lib/tools/parabola/index.js +63 -0
  67. package/lib/tools/parabola/index.js.map +1 -0
  68. package/lib/tools/point/component.js +186 -0
  69. package/lib/tools/point/component.js.map +1 -0
  70. package/lib/tools/point/index.js +32 -0
  71. package/lib/tools/point/index.js.map +1 -0
  72. package/lib/tools/polygon/component.js +518 -0
  73. package/lib/tools/polygon/component.js.map +1 -0
  74. package/lib/tools/polygon/index.js +106 -0
  75. package/lib/tools/polygon/index.js.map +1 -0
  76. package/lib/tools/polygon/line.js +157 -0
  77. package/lib/tools/polygon/line.js.map +1 -0
  78. package/lib/tools/polygon/polygon.js +165 -0
  79. package/lib/tools/polygon/polygon.js.map +1 -0
  80. package/lib/tools/ray/component.js +102 -0
  81. package/lib/tools/ray/component.js.map +1 -0
  82. package/lib/tools/ray/index.js +16 -0
  83. package/lib/tools/ray/index.js.map +1 -0
  84. package/lib/tools/segment/component.js +75 -0
  85. package/lib/tools/segment/component.js.map +1 -0
  86. package/lib/tools/segment/index.js +16 -0
  87. package/lib/tools/segment/index.js.map +1 -0
  88. package/lib/tools/shared/arrow-head.js +70 -0
  89. package/lib/tools/shared/arrow-head.js.map +1 -0
  90. package/lib/tools/shared/icons/CorrectSVG.js +36 -0
  91. package/lib/tools/shared/icons/CorrectSVG.js.map +1 -0
  92. package/lib/tools/shared/icons/IncorrectSVG.js +36 -0
  93. package/lib/tools/shared/icons/IncorrectSVG.js.map +1 -0
  94. package/lib/tools/shared/icons/MissingSVG.js +35 -0
  95. package/lib/tools/shared/icons/MissingSVG.js.map +1 -0
  96. package/lib/tools/shared/line/index.js +599 -0
  97. package/lib/tools/shared/line/index.js.map +1 -0
  98. package/lib/tools/shared/line/line-path.js +151 -0
  99. package/lib/tools/shared/line/line-path.js.map +1 -0
  100. package/lib/tools/shared/line/with-root-edge.js +155 -0
  101. package/lib/tools/shared/line/with-root-edge.js.map +1 -0
  102. package/lib/tools/shared/point/arrow-point.js +113 -0
  103. package/lib/tools/shared/point/arrow-point.js.map +1 -0
  104. package/lib/tools/shared/point/arrow.js +96 -0
  105. package/lib/tools/shared/point/arrow.js.map +1 -0
  106. package/lib/tools/shared/point/base-point.js +175 -0
  107. package/lib/tools/shared/point/base-point.js.map +1 -0
  108. package/lib/tools/shared/point/index.js +97 -0
  109. package/lib/tools/shared/point/index.js.map +1 -0
  110. package/lib/tools/shared/styles.js +58 -0
  111. package/lib/tools/shared/styles.js.map +1 -0
  112. package/lib/tools/shared/types.js +23 -0
  113. package/lib/tools/shared/types.js.map +1 -0
  114. package/lib/tools/sine/component.js +51 -0
  115. package/lib/tools/sine/component.js.map +1 -0
  116. package/lib/tools/sine/index.js +63 -0
  117. package/lib/tools/sine/index.js.map +1 -0
  118. package/lib/tools/vector/component.js +88 -0
  119. package/lib/tools/vector/component.js.map +1 -0
  120. package/lib/tools/vector/index.js +16 -0
  121. package/lib/tools/vector/index.js.map +1 -0
  122. package/lib/undo-redo.js +123 -0
  123. package/lib/undo-redo.js.map +1 -0
  124. package/lib/use-debounce.js +32 -0
  125. package/lib/use-debounce.js.map +1 -0
  126. package/lib/utils.js +307 -0
  127. package/lib/utils.js.map +1 -0
  128. package/package.json +1 -1
@@ -0,0 +1,359 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.toolIsAvailable = exports.setToolbarAvailability = exports.getAvailableTool = exports.filterByVisibleToolTypes = exports.filterByValidToolTypes = exports["default"] = exports.GraphWithControls = void 0;
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+
16
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
+
18
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
+
20
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
+
22
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
+
24
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
+
26
+ var _react = _interopRequireDefault(require("react"));
27
+
28
+ var _propTypes = _interopRequireDefault(require("prop-types"));
29
+
30
+ var _styles = require("@material-ui/core/styles");
31
+
32
+ var _classnames = _interopRequireDefault(require("classnames"));
33
+
34
+ var _uniq = _interopRequireDefault(require("lodash/uniq"));
35
+
36
+ var _isString = _interopRequireDefault(require("lodash/isString"));
37
+
38
+ var _renderUi = require("@pie-lib/render-ui");
39
+
40
+ var _toolMenu = _interopRequireDefault(require("./tool-menu"));
41
+
42
+ var _graph = _interopRequireWildcard(require("./graph"));
43
+
44
+ var _undoRedo = _interopRequireDefault(require("./undo-redo"));
45
+
46
+ var _tools = require("./tools");
47
+
48
+ var _core = require("@material-ui/core");
49
+
50
+ var _ExpandMore = _interopRequireDefault(require("@material-ui/icons/ExpandMore"));
51
+
52
+ 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); }
53
+
54
+ 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; }
55
+
56
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
57
+
58
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
59
+
60
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
61
+
62
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
63
+
64
+ var setToolbarAvailability = function setToolbarAvailability(toolbarTools) {
65
+ return _tools.toolsArr.map(function (tA) {
66
+ return _objectSpread(_objectSpread({}, tA), {}, {
67
+ toolbar: !!toolbarTools.find(function (t) {
68
+ return t === tA.type;
69
+ })
70
+ });
71
+ }) || [];
72
+ };
73
+
74
+ exports.setToolbarAvailability = setToolbarAvailability;
75
+
76
+ var toolIsAvailable = function toolIsAvailable(tools, currentTool) {
77
+ return currentTool && tools && (tools.find(function (tool) {
78
+ return tool.type === currentTool.type;
79
+ }) || {}).toolbar;
80
+ };
81
+
82
+ exports.toolIsAvailable = toolIsAvailable;
83
+
84
+ var getAvailableTool = function getAvailableTool(tools) {
85
+ return tools.find(function (tool) {
86
+ return tool.toolbar;
87
+ });
88
+ };
89
+
90
+ exports.getAvailableTool = getAvailableTool;
91
+
92
+ var filterByValidToolTypes = function filterByValidToolTypes(backgroundMarks) {
93
+ return backgroundMarks.filter(function (bM) {
94
+ return !!_tools.allTools.find(function (tool) {
95
+ return tool === bM.type;
96
+ });
97
+ });
98
+ };
99
+
100
+ exports.filterByValidToolTypes = filterByValidToolTypes;
101
+
102
+ var filterByVisibleToolTypes = function filterByVisibleToolTypes(toolbarTools, marks) {
103
+ return marks.filter(function (bM) {
104
+ return !!toolbarTools.find(function (tool) {
105
+ return tool === bM.type;
106
+ });
107
+ });
108
+ };
109
+
110
+ exports.filterByVisibleToolTypes = filterByVisibleToolTypes;
111
+
112
+ var getDefaultCurrentTool = function getDefaultCurrentTool(toolType) {
113
+ return _tools.toolsArr.find(function (tool) {
114
+ return tool.type === toolType;
115
+ }) || null;
116
+ };
117
+
118
+ var Collapsible = function Collapsible(_ref) {
119
+ var classes = _ref.classes,
120
+ children = _ref.children,
121
+ title = _ref.title;
122
+ return /*#__PURE__*/_react["default"].createElement(_core.ExpansionPanel, {
123
+ elevation: 0,
124
+ className: classes.expansionPanel,
125
+ disabledGutters: true,
126
+ square: true
127
+ }, /*#__PURE__*/_react["default"].createElement(_core.ExpansionPanelSummary, {
128
+ classes: {
129
+ root: classes.summaryRoot,
130
+ content: classes.summaryContent
131
+ },
132
+ expandIcon: /*#__PURE__*/_react["default"].createElement(_ExpandMore["default"], null)
133
+ }, /*#__PURE__*/_react["default"].createElement(_core.Typography, {
134
+ variant: "subheading"
135
+ }, title)), /*#__PURE__*/_react["default"].createElement(_core.ExpansionPanelDetails, {
136
+ className: classes.details
137
+ }, children));
138
+ };
139
+
140
+ Collapsible.propTypes = {
141
+ classes: _propTypes["default"].object,
142
+ children: _propTypes["default"].array,
143
+ title: _propTypes["default"].string
144
+ };
145
+
146
+ var GraphWithControls = /*#__PURE__*/function (_React$Component) {
147
+ (0, _inherits2["default"])(GraphWithControls, _React$Component);
148
+
149
+ var _super = _createSuper(GraphWithControls);
150
+
151
+ function GraphWithControls(props) {
152
+ var _this;
153
+
154
+ (0, _classCallCheck2["default"])(this, GraphWithControls);
155
+ _this = _super.call(this, props);
156
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeCurrentTool", function (tool, tools) {
157
+ return _this.setState({
158
+ currentTool: tools.find(function (t) {
159
+ return t.type === tool;
160
+ }),
161
+ labelModeEnabled: tool === 'label'
162
+ });
163
+ });
164
+ _this.state = {
165
+ currentTool: getDefaultCurrentTool(props.defaultTool),
166
+ labelModeEnabled: false
167
+ };
168
+ return _this;
169
+ }
170
+
171
+ (0, _createClass2["default"])(GraphWithControls, [{
172
+ key: "componentDidUpdate",
173
+ value: function componentDidUpdate(prevProps) {
174
+ var defaultTool = this.props.defaultTool;
175
+
176
+ if (prevProps.defaultTool !== defaultTool) {
177
+ var currentTool = getDefaultCurrentTool(defaultTool);
178
+ this.setState({
179
+ currentTool: currentTool
180
+ });
181
+ }
182
+ }
183
+ }, {
184
+ key: "render",
185
+ value: function render() {
186
+ var _this2 = this;
187
+
188
+ var _this$state = this.state,
189
+ currentTool = _this$state.currentTool,
190
+ labelModeEnabled = _this$state.labelModeEnabled;
191
+ var _this$props = this.props,
192
+ axesSettings = _this$props.axesSettings,
193
+ classes = _this$props.classes,
194
+ className = _this$props.className,
195
+ coordinatesOnHover = _this$props.coordinatesOnHover,
196
+ collapsibleToolbar = _this$props.collapsibleToolbar,
197
+ collapsibleToolbarTitle = _this$props.collapsibleToolbarTitle,
198
+ disabled = _this$props.disabled,
199
+ disabledLabels = _this$props.disabledLabels,
200
+ disabledTitle = _this$props.disabledTitle,
201
+ domain = _this$props.domain,
202
+ draggableTools = _this$props.draggableTools,
203
+ labels = _this$props.labels,
204
+ labelsPlaceholders = _this$props.labelsPlaceholders,
205
+ onChangeLabels = _this$props.onChangeLabels,
206
+ onChangeMarks = _this$props.onChangeMarks,
207
+ onChangeTitle = _this$props.onChangeTitle,
208
+ onChangeTools = _this$props.onChangeTools,
209
+ onUndo = _this$props.onUndo,
210
+ onRedo = _this$props.onRedo,
211
+ onReset = _this$props.onReset,
212
+ range = _this$props.range,
213
+ size = _this$props.size,
214
+ showLabels = _this$props.showLabels,
215
+ showPixelGuides = _this$props.showPixelGuides,
216
+ showTitle = _this$props.showTitle,
217
+ title = _this$props.title,
218
+ titlePlaceholder = _this$props.titlePlaceholder,
219
+ language = _this$props.language,
220
+ removeIncompleteTool = _this$props.removeIncompleteTool,
221
+ limitLabeling = _this$props.limitLabeling;
222
+ var _this$props2 = this.props,
223
+ backgroundMarks = _this$props2.backgroundMarks,
224
+ marks = _this$props2.marks,
225
+ toolbarTools = _this$props2.toolbarTools; // make sure only valid tool types are kept (string) and without duplicates
226
+
227
+ toolbarTools = (0, _uniq["default"])(toolbarTools || []).filter(function (tT) {
228
+ return !!(0, _isString["default"])(tT);
229
+ }) || []; // keep only the backgroundMarks that have valid types
230
+
231
+ backgroundMarks = filterByValidToolTypes(backgroundMarks || []); // keep only the marks that have types which appear in toolbar
232
+
233
+ marks = filterByVisibleToolTypes(toolbarTools, marks || []);
234
+ var tools = setToolbarAvailability(toolbarTools); // set current tool if there's no current tool or if the existing one is no longer available
235
+
236
+ if (!currentTool || !toolIsAvailable(tools, currentTool)) {
237
+ currentTool = getAvailableTool(tools);
238
+ }
239
+
240
+ var graphActions = /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_toolMenu["default"], {
241
+ currentToolType: currentTool && currentTool.type,
242
+ disabled: !!disabled,
243
+ draggableTools: draggableTools,
244
+ labelModeEnabled: labelModeEnabled,
245
+ onChange: function onChange(tool) {
246
+ return _this2.changeCurrentTool(tool, tools);
247
+ },
248
+ toolbarTools: toolbarTools,
249
+ onChangeTools: onChangeTools,
250
+ language: language
251
+ }), !disabled && /*#__PURE__*/_react["default"].createElement(_undoRedo["default"], {
252
+ onUndo: onUndo,
253
+ onRedo: onRedo,
254
+ onReset: onReset,
255
+ language: language
256
+ }));
257
+
258
+ return /*#__PURE__*/_react["default"].createElement("div", {
259
+ className: (0, _classnames["default"])(classes.graphWithControls, className)
260
+ }, /*#__PURE__*/_react["default"].createElement("div", {
261
+ className: classes.controls
262
+ }, collapsibleToolbar ? /*#__PURE__*/_react["default"].createElement(Collapsible, {
263
+ classes: classes,
264
+ title: collapsibleToolbarTitle
265
+ }, graphActions) : graphActions), /*#__PURE__*/_react["default"].createElement("div", {
266
+ ref: function ref(r) {
267
+ return _this2.labelNode = r;
268
+ }
269
+ }), /*#__PURE__*/_react["default"].createElement(_graph["default"], {
270
+ axesSettings: axesSettings,
271
+ backgroundMarks: backgroundMarks,
272
+ coordinatesOnHover: coordinatesOnHover,
273
+ currentTool: currentTool,
274
+ disabledLabels: disabledLabels,
275
+ disabledTitle: disabledTitle,
276
+ domain: domain,
277
+ labels: labels,
278
+ labelModeEnabled: labelModeEnabled,
279
+ labelsPlaceholders: labelsPlaceholders,
280
+ marks: marks,
281
+ onChangeMarks: !disabled ? onChangeMarks : undefined,
282
+ onChangeLabels: onChangeLabels,
283
+ onChangeTitle: onChangeTitle,
284
+ range: range,
285
+ size: size,
286
+ showLabels: showLabels,
287
+ showPixelGuides: showPixelGuides,
288
+ showTitle: showTitle,
289
+ title: title,
290
+ titlePlaceholder: titlePlaceholder,
291
+ tools: tools,
292
+ removeIncompleteTool: removeIncompleteTool,
293
+ limitLabeling: limitLabeling
294
+ }));
295
+ }
296
+ }]);
297
+ return GraphWithControls;
298
+ }(_react["default"].Component);
299
+
300
+ exports.GraphWithControls = GraphWithControls;
301
+ (0, _defineProperty2["default"])(GraphWithControls, "propTypes", _objectSpread(_objectSpread({}, _graph.graphPropTypes), {}, {
302
+ onUndo: _propTypes["default"].func,
303
+ onRedo: _propTypes["default"].func,
304
+ onReset: _propTypes["default"].func,
305
+ toolbarTools: _propTypes["default"].arrayOf(_propTypes["default"].string),
306
+ // array of tool types that have to be displayed in the toolbar, same shape as 'allTools'
307
+ language: _propTypes["default"].string
308
+ }));
309
+ (0, _defineProperty2["default"])(GraphWithControls, "defaultProps", {
310
+ collapsibleToolbar: false,
311
+ collapsibleToolbarTitle: '',
312
+ disabledLabels: false,
313
+ disabledTitle: false,
314
+ showLabels: true,
315
+ showTitle: true,
316
+ toolbarTools: []
317
+ });
318
+
319
+ var styles = function styles(theme) {
320
+ return {
321
+ graphWithControls: {
322
+ display: 'flex',
323
+ flexDirection: 'column',
324
+ width: 'min-content'
325
+ },
326
+ controls: {
327
+ display: 'flex',
328
+ justifyContent: 'space-between',
329
+ padding: theme.spacing.unit,
330
+ color: _renderUi.color.text(),
331
+ backgroundColor: _renderUi.color.primaryLight(),
332
+ '& button': {
333
+ fontSize: theme.typography.fontSize
334
+ }
335
+ },
336
+ expansionPanel: {
337
+ backgroundColor: _renderUi.color.primaryLight(),
338
+ width: '100%'
339
+ },
340
+ summaryRoot: {
341
+ padding: "0 ".concat(theme.spacing.unit, "px"),
342
+ minHeight: '32px !important'
343
+ },
344
+ summaryContent: {
345
+ margin: '4px 0 !important'
346
+ },
347
+ details: {
348
+ padding: 0,
349
+ marginTop: theme.spacing.unit,
350
+ display: 'flex',
351
+ justifyContent: 'space-between'
352
+ }
353
+ };
354
+ };
355
+
356
+ var _default = (0, _styles.withStyles)(styles)(GraphWithControls);
357
+
358
+ exports["default"] = _default;
359
+ //# sourceMappingURL=graph-with-controls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/graph-with-controls.jsx"],"names":["setToolbarAvailability","toolbarTools","toolsArr","map","tA","toolbar","find","t","type","toolIsAvailable","tools","currentTool","tool","getAvailableTool","filterByValidToolTypes","backgroundMarks","filter","bM","allTools","filterByVisibleToolTypes","marks","getDefaultCurrentTool","toolType","Collapsible","classes","children","title","expansionPanel","root","summaryRoot","content","summaryContent","details","propTypes","PropTypes","object","array","string","GraphWithControls","props","setState","labelModeEnabled","state","defaultTool","prevProps","axesSettings","className","coordinatesOnHover","collapsibleToolbar","collapsibleToolbarTitle","disabled","disabledLabels","disabledTitle","domain","draggableTools","labels","labelsPlaceholders","onChangeLabels","onChangeMarks","onChangeTitle","onChangeTools","onUndo","onRedo","onReset","range","size","showLabels","showPixelGuides","showTitle","titlePlaceholder","language","removeIncompleteTool","limitLabeling","tT","graphActions","changeCurrentTool","graphWithControls","controls","r","labelNode","undefined","React","Component","graphPropTypes","func","arrayOf","styles","theme","display","flexDirection","width","justifyContent","padding","spacing","unit","color","text","backgroundColor","primaryLight","fontSize","typography","minHeight","margin","marginTop"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport uniq from 'lodash/uniq';\nimport isString from 'lodash/isString';\nimport { color } from '@pie-lib/render-ui';\n\nimport ToolMenu from './tool-menu';\nimport Graph, { graphPropTypes } from './graph';\nimport UndoRedo from './undo-redo';\nimport { allTools, toolsArr } from './tools';\nimport { ExpansionPanel, ExpansionPanelDetails, ExpansionPanelSummary, Typography } from '@material-ui/core';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\n\nexport const setToolbarAvailability = (toolbarTools) =>\n toolsArr.map((tA) => ({ ...tA, toolbar: !!toolbarTools.find((t) => t === tA.type) })) || [];\n\nexport const toolIsAvailable = (tools, currentTool) =>\n currentTool && tools && (tools.find((tool) => tool.type === currentTool.type) || {}).toolbar;\n\nexport const getAvailableTool = (tools) => tools.find((tool) => tool.toolbar);\n\nexport const filterByValidToolTypes = (backgroundMarks) =>\n backgroundMarks.filter((bM) => !!allTools.find((tool) => tool === bM.type));\n\nexport const filterByVisibleToolTypes = (toolbarTools, marks) =>\n marks.filter((bM) => !!toolbarTools.find((tool) => tool === bM.type));\n\nconst getDefaultCurrentTool = (toolType) => toolsArr.find((tool) => tool.type === toolType) || null;\n\nconst Collapsible = ({ classes, children, title }) => (\n <ExpansionPanel elevation={0} className={classes.expansionPanel} disabledGutters={true} square={true}>\n <ExpansionPanelSummary\n classes={{\n root: classes.summaryRoot,\n content: classes.summaryContent,\n }}\n expandIcon={<ExpandMoreIcon />}\n >\n <Typography variant=\"subheading\">{title}</Typography>\n </ExpansionPanelSummary>\n <ExpansionPanelDetails className={classes.details}>{children}</ExpansionPanelDetails>\n </ExpansionPanel>\n);\n\nCollapsible.propTypes = {\n classes: PropTypes.object,\n children: PropTypes.array,\n title: PropTypes.string,\n};\n\nexport class GraphWithControls extends React.Component {\n static propTypes = {\n ...graphPropTypes,\n onUndo: PropTypes.func,\n onRedo: PropTypes.func,\n onReset: PropTypes.func,\n toolbarTools: PropTypes.arrayOf(PropTypes.string), // array of tool types that have to be displayed in the toolbar, same shape as 'allTools'\n language: PropTypes.string,\n };\n\n static defaultProps = {\n collapsibleToolbar: false,\n collapsibleToolbarTitle: '',\n disabledLabels: false,\n disabledTitle: false,\n showLabels: true,\n showTitle: true,\n toolbarTools: [],\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n currentTool: getDefaultCurrentTool(props.defaultTool),\n labelModeEnabled: false,\n };\n }\n\n componentDidUpdate(prevProps) {\n const { defaultTool } = this.props;\n\n if (prevProps.defaultTool !== defaultTool) {\n const currentTool = getDefaultCurrentTool(defaultTool);\n\n this.setState({ currentTool });\n }\n }\n\n changeCurrentTool = (tool, tools) =>\n this.setState({ currentTool: tools.find((t) => t.type === tool), labelModeEnabled: tool === 'label' });\n\n render() {\n let { currentTool, labelModeEnabled } = this.state;\n const {\n axesSettings,\n classes,\n className,\n coordinatesOnHover,\n collapsibleToolbar,\n collapsibleToolbarTitle,\n disabled,\n disabledLabels,\n disabledTitle,\n domain,\n draggableTools,\n labels,\n labelsPlaceholders,\n onChangeLabels,\n onChangeMarks,\n onChangeTitle,\n onChangeTools,\n onUndo,\n onRedo,\n onReset,\n range,\n size,\n showLabels,\n showPixelGuides,\n showTitle,\n title,\n titlePlaceholder,\n language,\n removeIncompleteTool,\n limitLabeling,\n } = this.props;\n let { backgroundMarks, marks, toolbarTools } = this.props;\n\n // make sure only valid tool types are kept (string) and without duplicates\n toolbarTools = uniq(toolbarTools || []).filter((tT) => !!isString(tT)) || [];\n\n // keep only the backgroundMarks that have valid types\n backgroundMarks = filterByValidToolTypes(backgroundMarks || []);\n\n // keep only the marks that have types which appear in toolbar\n marks = filterByVisibleToolTypes(toolbarTools, marks || []);\n\n const tools = setToolbarAvailability(toolbarTools);\n\n // set current tool if there's no current tool or if the existing one is no longer available\n if (!currentTool || !toolIsAvailable(tools, currentTool)) {\n currentTool = getAvailableTool(tools);\n }\n\n const graphActions = (\n <React.Fragment>\n <ToolMenu\n currentToolType={currentTool && currentTool.type}\n disabled={!!disabled}\n draggableTools={draggableTools}\n labelModeEnabled={labelModeEnabled}\n onChange={(tool) => this.changeCurrentTool(tool, tools)}\n toolbarTools={toolbarTools}\n onChangeTools={onChangeTools}\n language={language}\n />\n\n {!disabled && <UndoRedo onUndo={onUndo} onRedo={onRedo} onReset={onReset} language={language} />}\n </React.Fragment>\n );\n\n return (\n <div className={classNames(classes.graphWithControls, className)}>\n <div className={classes.controls}>\n {collapsibleToolbar ? (\n <Collapsible classes={classes} title={collapsibleToolbarTitle}>\n {graphActions}\n </Collapsible>\n ) : (\n graphActions\n )}\n </div>\n\n <div ref={(r) => (this.labelNode = r)} />\n\n <Graph\n axesSettings={axesSettings}\n backgroundMarks={backgroundMarks}\n coordinatesOnHover={coordinatesOnHover}\n currentTool={currentTool}\n disabledLabels={disabledLabels}\n disabledTitle={disabledTitle}\n domain={domain}\n labels={labels}\n labelModeEnabled={labelModeEnabled}\n labelsPlaceholders={labelsPlaceholders}\n marks={marks}\n onChangeMarks={!disabled ? onChangeMarks : undefined}\n onChangeLabels={onChangeLabels}\n onChangeTitle={onChangeTitle}\n range={range}\n size={size}\n showLabels={showLabels}\n showPixelGuides={showPixelGuides}\n showTitle={showTitle}\n title={title}\n titlePlaceholder={titlePlaceholder}\n tools={tools}\n removeIncompleteTool={removeIncompleteTool}\n limitLabeling={limitLabeling}\n />\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n graphWithControls: {\n display: 'flex',\n flexDirection: 'column',\n width: 'min-content',\n },\n controls: {\n display: 'flex',\n justifyContent: 'space-between',\n padding: theme.spacing.unit,\n color: color.text(),\n backgroundColor: color.primaryLight(),\n '& button': {\n fontSize: theme.typography.fontSize,\n },\n },\n expansionPanel: {\n backgroundColor: color.primaryLight(),\n width: '100%',\n },\n summaryRoot: {\n padding: `0 ${theme.spacing.unit}px`,\n minHeight: '32px !important',\n },\n summaryContent: {\n margin: '4px 0 !important',\n },\n details: {\n padding: 0,\n marginTop: theme.spacing.unit,\n display: 'flex',\n justifyContent: 'space-between',\n },\n});\n\nexport default withStyles(styles)(GraphWithControls);\n"],"file":"graph-with-controls.js"}