@pie-lib/graphing 2.4.3-next.352 → 2.4.3-next.362

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.
@@ -29,6 +29,10 @@ var _undoRedo = _interopRequireDefault(require("./undo-redo"));
29
29
 
30
30
  var _tools = require("./tools");
31
31
 
32
+ var _core = require("@material-ui/core");
33
+
34
+ var _ExpandMore = _interopRequireDefault(require("@material-ui/icons/ExpandMore"));
35
+
32
36
  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); }
33
37
 
34
38
  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; }
@@ -115,6 +119,28 @@ var getDefaultCurrentTool = function getDefaultCurrentTool(toolType) {
115
119
  }) || null;
116
120
  };
117
121
 
122
+ var Collapsible = function Collapsible(_ref) {
123
+ var classes = _ref.classes,
124
+ children = _ref.children,
125
+ title = _ref.title;
126
+ return /*#__PURE__*/_react["default"].createElement(_core.ExpansionPanel, {
127
+ elevation: 0,
128
+ className: classes.expansionPanel,
129
+ disabledGutters: true,
130
+ square: true
131
+ }, /*#__PURE__*/_react["default"].createElement(_core.ExpansionPanelSummary, {
132
+ classes: {
133
+ root: classes.summaryRoot,
134
+ content: classes.summaryContent
135
+ },
136
+ expandIcon: /*#__PURE__*/_react["default"].createElement(_ExpandMore["default"], null)
137
+ }, /*#__PURE__*/_react["default"].createElement(_core.Typography, {
138
+ variant: "subheading"
139
+ }, title)), /*#__PURE__*/_react["default"].createElement(_core.ExpansionPanelDetails, {
140
+ className: classes.details
141
+ }, children));
142
+ };
143
+
118
144
  var GraphWithControls = /*#__PURE__*/function (_React$Component) {
119
145
  _inherits(GraphWithControls, _React$Component);
120
146
 
@@ -175,6 +201,8 @@ var GraphWithControls = /*#__PURE__*/function (_React$Component) {
175
201
  classes = _this$props.classes,
176
202
  className = _this$props.className,
177
203
  coordinatesOnHover = _this$props.coordinatesOnHover,
204
+ collapsibleToolbar = _this$props.collapsibleToolbar,
205
+ collapsibleToolbarTitle = _this$props.collapsibleToolbarTitle,
178
206
  disabled = _this$props.disabled,
179
207
  domain = _this$props.domain,
180
208
  labels = _this$props.labels,
@@ -203,11 +231,7 @@ var GraphWithControls = /*#__PURE__*/function (_React$Component) {
203
231
  currentTool = getAvailableTool(tools);
204
232
  }
205
233
 
206
- return /*#__PURE__*/_react["default"].createElement("div", {
207
- className: (0, _classnames["default"])(classes.graphWithControls, className)
208
- }, /*#__PURE__*/_react["default"].createElement("div", {
209
- className: classes.controls
210
- }, /*#__PURE__*/_react["default"].createElement(_toolMenu["default"], {
234
+ var graphActions = /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_toolMenu["default"], {
211
235
  currentToolType: currentTool && currentTool.type,
212
236
  disabled: !!disabled,
213
237
  labelModeEnabled: labelModeEnabled,
@@ -220,7 +244,16 @@ var GraphWithControls = /*#__PURE__*/function (_React$Component) {
220
244
  onUndo: onUndo,
221
245
  onRedo: onRedo,
222
246
  onReset: onReset
223
- })), /*#__PURE__*/_react["default"].createElement("div", {
247
+ }));
248
+
249
+ return /*#__PURE__*/_react["default"].createElement("div", {
250
+ className: (0, _classnames["default"])(classes.graphWithControls, className)
251
+ }, /*#__PURE__*/_react["default"].createElement("div", {
252
+ className: classes.controls
253
+ }, collapsibleToolbar ? /*#__PURE__*/_react["default"].createElement(Collapsible, {
254
+ classes: classes,
255
+ title: collapsibleToolbarTitle
256
+ }, graphActions) : graphActions), /*#__PURE__*/_react["default"].createElement("div", {
224
257
  ref: function ref(r) {
225
258
  return _this2.labelNode = r;
226
259
  }
@@ -256,6 +289,8 @@ _defineProperty(GraphWithControls, "propTypes", _objectSpread(_objectSpread({},
256
289
  }));
257
290
 
258
291
  _defineProperty(GraphWithControls, "defaultProps", {
292
+ collapsibleToolbar: false,
293
+ collapsibleToolbarTitle: '',
259
294
  toolbarTools: []
260
295
  });
261
296
 
@@ -276,6 +311,20 @@ var styles = function styles(theme) {
276
311
  '& button': {
277
312
  fontSize: theme.typography.fontSize
278
313
  }
314
+ },
315
+ expansionPanel: {
316
+ backgroundColor: _renderUi.color.primaryLight()
317
+ },
318
+ summaryRoot: {
319
+ padding: "0 ".concat(theme.spacing.unit, "px"),
320
+ minHeight: '32px !important'
321
+ },
322
+ summaryContent: {
323
+ margin: '4px 0 !important'
324
+ },
325
+ details: {
326
+ padding: 0,
327
+ marginTop: theme.spacing.unit
279
328
  }
280
329
  };
281
330
  };
@@ -1 +1 @@
1
- {"version":3,"file":"graph-with-controls.js","names":["setToolbarAvailability","toolbarTools","toolsArr","map","tA","toolbar","find","t","type","toolIsAvailable","tools","currentTool","tool","getAvailableTool","filterByValidToolTypes","backgroundMarks","filter","bM","allTools","filterByVisibleToolTypes","marks","getDefaultCurrentTool","toolType","GraphWithControls","props","setState","state","labelModeEnabled","defaultTool","prevProps","axesSettings","classes","className","coordinatesOnHover","disabled","domain","labels","onChangeMarks","onUndo","onRedo","onReset","range","size","title","uniq","tT","isString","classNames","graphWithControls","controls","changeCurrentTool","toggleLabelMode","r","labelNode","undefined","React","Component","graphPropTypes","PropTypes","func","arrayOf","string","styles","theme","width","display","justifyContent","padding","spacing","unit","color","text","backgroundColor","primaryLight","borderTop","primaryDark","borderBottom","borderLeft","borderRight","fontSize","typography","withStyles"],"sources":["../src/graph-with-controls.jsx"],"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';\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\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 };\n\n static defaultProps = { toolbarTools: [] };\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) });\n\n toggleLabelMode = () => this.setState(state => ({ labelModeEnabled: !state.labelModeEnabled }));\n\n render() {\n let { currentTool, labelModeEnabled } = this.state;\n\n const {\n axesSettings,\n classes,\n className,\n coordinatesOnHover,\n disabled,\n domain,\n labels,\n onChangeMarks,\n onUndo,\n onRedo,\n onReset,\n range,\n size,\n title\n } = this.props;\n\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 return (\n <div className={classNames(classes.graphWithControls, className)}>\n <div className={classes.controls}>\n <ToolMenu\n currentToolType={currentTool && currentTool.type}\n disabled={!!disabled}\n labelModeEnabled={labelModeEnabled}\n onChange={tool => this.changeCurrentTool(tool, tools)}\n onToggleLabelMode={this.toggleLabelMode}\n toolbarTools={toolbarTools}\n />\n\n {!disabled && <UndoRedo onUndo={onUndo} onRedo={onRedo} onReset={onReset} />}\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 domain={domain}\n labels={labels}\n labelModeEnabled={labelModeEnabled}\n marks={marks}\n onChangeMarks={!disabled ? onChangeMarks : undefined}\n range={range}\n size={size}\n title={title}\n tools={tools}\n />\n </div>\n );\n }\n}\n\nconst styles = theme => ({\n graphWithControls: {},\n controls: {\n width: 'inherit',\n display: 'flex',\n justifyContent: 'space-between',\n padding: theme.spacing.unit,\n color: color.text(),\n backgroundColor: color.primaryLight(),\n borderTop: `solid 1px ${color.primaryDark()}`,\n borderBottom: `solid 0px ${color.primaryDark()}`,\n borderLeft: `solid 1px ${color.primaryDark()}`,\n borderRight: `solid 1px ${color.primaryDark()}`,\n '& button': {\n fontSize: theme.typography.fontSize\n }\n }\n});\n\nexport default withStyles(styles)(GraphWithControls);\n"],"mappings":"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"}
1
+ {"version":3,"file":"graph-with-controls.js","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","GraphWithControls","props","setState","state","labelModeEnabled","defaultTool","prevProps","axesSettings","className","coordinatesOnHover","collapsibleToolbar","collapsibleToolbarTitle","disabled","domain","labels","onChangeMarks","onUndo","onRedo","onReset","range","size","uniq","tT","isString","graphActions","changeCurrentTool","toggleLabelMode","classNames","graphWithControls","controls","r","labelNode","undefined","React","Component","graphPropTypes","PropTypes","func","arrayOf","string","styles","theme","width","display","justifyContent","padding","spacing","unit","color","text","backgroundColor","primaryLight","borderTop","primaryDark","borderBottom","borderLeft","borderRight","fontSize","typography","minHeight","margin","marginTop","withStyles"],"sources":["../src/graph-with-controls.jsx"],"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 {\n ExpansionPanel,\n ExpansionPanelDetails,\n ExpansionPanelSummary,\n Typography\n} 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\n elevation={0}\n className={classes.expansionPanel}\n disabledGutters={true}\n square={true}\n >\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\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 };\n\n static defaultProps = {\n collapsibleToolbar: false,\n collapsibleToolbarTitle: '',\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) });\n\n toggleLabelMode = () => this.setState(state => ({ labelModeEnabled: !state.labelModeEnabled }));\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 domain,\n labels,\n onChangeMarks,\n onUndo,\n onRedo,\n onReset,\n range,\n size,\n title\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 labelModeEnabled={labelModeEnabled}\n onChange={tool => this.changeCurrentTool(tool, tools)}\n onToggleLabelMode={this.toggleLabelMode}\n toolbarTools={toolbarTools}\n />\n\n {!disabled && <UndoRedo onUndo={onUndo} onRedo={onRedo} onReset={onReset} />}\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 domain={domain}\n labels={labels}\n labelModeEnabled={labelModeEnabled}\n marks={marks}\n onChangeMarks={!disabled ? onChangeMarks : undefined}\n range={range}\n size={size}\n title={title}\n tools={tools}\n />\n </div>\n );\n }\n}\n\nconst styles = theme => ({\n graphWithControls: {},\n controls: {\n width: 'inherit',\n display: 'flex',\n justifyContent: 'space-between',\n padding: theme.spacing.unit,\n color: color.text(),\n backgroundColor: color.primaryLight(),\n borderTop: `solid 1px ${color.primaryDark()}`,\n borderBottom: `solid 0px ${color.primaryDark()}`,\n borderLeft: `solid 1px ${color.primaryDark()}`,\n borderRight: `solid 1px ${color.primaryDark()}`,\n '& button': {\n fontSize: theme.typography.fontSize\n }\n },\n expansionPanel: {\n backgroundColor: color.primaryLight()\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 }\n});\n\nexport default withStyles(styles)(GraphWithControls);\n"],"mappings":"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"}
package/lib/graph.js CHANGED
@@ -80,6 +80,8 @@ var graphPropTypes = {
80
80
  axesSettings: _propTypes["default"].shape(_axis.AxisPropTypes),
81
81
  backgroundMarks: _propTypes["default"].array,
82
82
  className: _propTypes["default"].string,
83
+ collapsibleToolbar: _propTypes["default"].bool,
84
+ collapsibleToolbarTitle: _propTypes["default"].string,
83
85
  domain: _plot.types.DomainType,
84
86
  labels: _propTypes["default"].shape(_labels.LabelType),
85
87
  labelModeEnabled: _propTypes["default"].bool,
package/lib/graph.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"graph.js","names":["log","debug","graphPropTypes","axesSettings","PropTypes","shape","AxisPropTypes","backgroundMarks","array","className","string","domain","types","DomainType","labels","LabelType","labelModeEnabled","bool","coordinatesOnHover","marks","onChangeMarks","func","range","size","width","number","isRequired","height","title","tools","getMaskSize","x","y","removeBuildingToolIfCurrentToolDiffers","currentTool","buildingMark","filter","m","building","newMarks","cloneDeep","type","index","findIndex","isEqual","splice","Graph","setState","labelNode","oldMark","newMark","props","isDuplicatedMark","markData","updatedMark","complete","updateMarks","existing","update","addIfMissing","mark","tool","find","t","Component","point","addPoint","undefined","graphProps","createGraphProps","rootNode","maskSize","common","r","padding","onBgClick","map","getComponent","markType","disabled","isBackground","state","changeMark","completeMark","startDrag","stopDrag","pointerEvents","React","object"],"sources":["../src/graph.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport isEqual from 'lodash/isEqual';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { Root, types, createGraphProps } from '@pie-lib/plot';\nimport debug from 'debug';\n\nimport Labels from './labels';\nimport { Axes, AxisPropTypes } from './axis';\nimport Grid from './grid';\nimport { LabelType } from './labels';\nimport Bg from './bg';\nimport { isDuplicatedMark } from './utils';\n\nconst log = debug('pie-lib:graphing:graph');\n\nexport const graphPropTypes = {\n axesSettings: PropTypes.shape(AxisPropTypes),\n backgroundMarks: PropTypes.array,\n className: PropTypes.string,\n domain: types.DomainType,\n labels: PropTypes.shape(LabelType),\n labelModeEnabled: PropTypes.bool,\n coordinatesOnHover: PropTypes.bool,\n marks: PropTypes.array,\n onChangeMarks: PropTypes.func,\n range: types.DomainType,\n size: PropTypes.shape({\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired\n }),\n title: PropTypes.string,\n tools: PropTypes.array\n};\n\nconst getMaskSize = size => ({\n x: -23,\n y: -23,\n width: size.width + 46,\n height: size.height + 46\n});\n\nexport const removeBuildingToolIfCurrentToolDiffers = ({ marks, currentTool }) => {\n const buildingMark = marks.filter(m => m.building)[0];\n let newMarks = cloneDeep(marks);\n\n if (buildingMark && currentTool && buildingMark.type !== currentTool.type) {\n const index = newMarks.findIndex(m => isEqual(m, buildingMark));\n\n if (index >= 0) {\n newMarks.splice(index, 1);\n }\n }\n\n return newMarks;\n};\n\nexport class Graph extends React.Component {\n static propTypes = {\n ...graphPropTypes,\n currentTool: PropTypes.object\n };\n\n static defaultProps = {\n onChangeMarks: () => {}\n };\n\n state = {};\n\n componentDidMount = () => this.setState({ labelNode: this.labelNode });\n\n changeMark = (oldMark, newMark) => {\n const { onChangeMarks, marks } = this.props;\n let newMarks = cloneDeep(marks);\n\n const index = newMarks.findIndex(m => isEqual(m, oldMark));\n\n if (index >= 0 && !isDuplicatedMark(newMark, marks, oldMark)) {\n newMarks.splice(index, 1, newMark);\n\n onChangeMarks(newMarks);\n }\n };\n\n completeMark = markData => {\n const { currentTool, marks } = this.props;\n const buildingMark = marks.filter(m => m.building)[0];\n\n if (!buildingMark || !currentTool) return;\n\n const updatedMark = currentTool.complete(buildingMark, markData);\n\n this.updateMarks(buildingMark, updatedMark);\n };\n\n updateMarks = (existing, update, addIfMissing = false) => {\n const { onChangeMarks, marks } = this.props;\n let newMarks = cloneDeep(marks);\n\n if (!update.building && isDuplicatedMark(update, marks)) {\n return;\n }\n\n const index = newMarks.findIndex(m => isEqual(m, existing));\n\n if (index >= 0) {\n newMarks.splice(index, 1, update);\n\n onChangeMarks(newMarks);\n } else if (addIfMissing) {\n onChangeMarks([...newMarks, update]);\n }\n };\n\n getComponent = mark => {\n if (!mark) return null;\n\n const tool = (this.props.tools || []).find(t => t.type === mark.type);\n\n return (tool && tool.Component) || null;\n };\n\n onBgClick = point => {\n const { x, y } = point;\n const { labelModeEnabled, currentTool, marks } = this.props;\n\n log('[onBgClick] x,y: ', x, y);\n\n if (labelModeEnabled || !currentTool) {\n return;\n }\n\n const buildingMark = marks.filter(m => m.building)[0];\n let updatedMark;\n\n // if the building mark has a different type, we just replace it\n if (buildingMark && currentTool && buildingMark.type === currentTool.type) {\n updatedMark = currentTool.addPoint({ x, y }, { ...buildingMark });\n } else {\n updatedMark = currentTool.addPoint({ x, y }, undefined);\n }\n\n this.updateMarks(buildingMark, updatedMark, true);\n };\n\n render() {\n const {\n axesSettings,\n currentTool,\n coordinatesOnHover,\n size,\n domain,\n backgroundMarks,\n range,\n title,\n labels,\n labelModeEnabled\n } = this.props;\n let { marks } = this.props;\n\n const graphProps = createGraphProps(domain, range, size, () => this.rootNode);\n const maskSize = getMaskSize(size);\n const common = { graphProps, labelModeEnabled };\n\n marks = removeBuildingToolIfCurrentToolDiffers({ marks: marks || [], currentTool });\n\n return (\n <Root rootRef={r => (this.rootNode = r)} title={title} {...common}>\n <Labels value={labels} {...common} />\n <g transform={`translate(${domain.padding}, ${range.padding})`}>\n <Grid {...common} />\n <Axes {...axesSettings} {...common} />\n <Bg {...size} onClick={this.onBgClick} {...common} />\n <mask id=\"myMask\">\n <rect {...maskSize} fill=\"white\" /> {/* TODO hardcoded color */}\n </mask>\n\n <g id=\"marks\" mask=\"url('#myMask')\">\n {(backgroundMarks || []).map((m, index) => {\n const Component = this.getComponent(m);\n const markType = m.type;\n\n return (\n <Component\n key={`${markType}-${index}-bg`}\n mark={{ ...m, disabled: true, isBackground: true }}\n labelNode={this.state.labelNode}\n {...common}\n />\n );\n })}\n\n {marks.map((m, index) => {\n const Component = this.getComponent(m);\n const markType = m.type;\n\n return (\n <Component\n key={`${markType}-${index}`}\n mark={m}\n coordinatesOnHover={coordinatesOnHover}\n onChange={this.changeMark}\n onComplete={this.completeMark}\n onClick={this.onBgClick}\n onDragStart={this.startDrag}\n onDragStop={this.stopDrag}\n labelNode={this.state.labelNode}\n isToolActive={currentTool && markType === currentTool.type}\n {...common}\n />\n );\n })}\n\n <foreignObject\n ref={labelNode => (this.labelNode = labelNode)}\n x=\"0\"\n y=\"0\"\n {...size}\n style={{ pointerEvents: 'none' }}\n />\n </g>\n </g>\n </Root>\n );\n }\n}\n\nexport default Graph;\n"],"mappings":"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"}
1
+ {"version":3,"file":"graph.js","names":["log","debug","graphPropTypes","axesSettings","PropTypes","shape","AxisPropTypes","backgroundMarks","array","className","string","collapsibleToolbar","bool","collapsibleToolbarTitle","domain","types","DomainType","labels","LabelType","labelModeEnabled","coordinatesOnHover","marks","onChangeMarks","func","range","size","width","number","isRequired","height","title","tools","getMaskSize","x","y","removeBuildingToolIfCurrentToolDiffers","currentTool","buildingMark","filter","m","building","newMarks","cloneDeep","type","index","findIndex","isEqual","splice","Graph","setState","labelNode","oldMark","newMark","props","isDuplicatedMark","markData","updatedMark","complete","updateMarks","existing","update","addIfMissing","mark","tool","find","t","Component","point","addPoint","undefined","graphProps","createGraphProps","rootNode","maskSize","common","r","padding","onBgClick","map","getComponent","markType","disabled","isBackground","state","changeMark","completeMark","startDrag","stopDrag","pointerEvents","React","object"],"sources":["../src/graph.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport isEqual from 'lodash/isEqual';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { Root, types, createGraphProps } from '@pie-lib/plot';\nimport debug from 'debug';\n\nimport Labels from './labels';\nimport { Axes, AxisPropTypes } from './axis';\nimport Grid from './grid';\nimport { LabelType } from './labels';\nimport Bg from './bg';\nimport { isDuplicatedMark } from './utils';\n\nconst log = debug('pie-lib:graphing:graph');\n\nexport const graphPropTypes = {\n axesSettings: PropTypes.shape(AxisPropTypes),\n backgroundMarks: PropTypes.array,\n className: PropTypes.string,\n collapsibleToolbar: PropTypes.bool,\n collapsibleToolbarTitle: PropTypes.string,\n domain: types.DomainType,\n labels: PropTypes.shape(LabelType),\n labelModeEnabled: PropTypes.bool,\n coordinatesOnHover: PropTypes.bool,\n marks: PropTypes.array,\n onChangeMarks: PropTypes.func,\n range: types.DomainType,\n size: PropTypes.shape({\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired\n }),\n title: PropTypes.string,\n tools: PropTypes.array\n};\n\nconst getMaskSize = size => ({\n x: -23,\n y: -23,\n width: size.width + 46,\n height: size.height + 46\n});\n\nexport const removeBuildingToolIfCurrentToolDiffers = ({ marks, currentTool }) => {\n const buildingMark = marks.filter(m => m.building)[0];\n let newMarks = cloneDeep(marks);\n\n if (buildingMark && currentTool && buildingMark.type !== currentTool.type) {\n const index = newMarks.findIndex(m => isEqual(m, buildingMark));\n\n if (index >= 0) {\n newMarks.splice(index, 1);\n }\n }\n\n return newMarks;\n};\n\nexport class Graph extends React.Component {\n static propTypes = {\n ...graphPropTypes,\n currentTool: PropTypes.object\n };\n\n static defaultProps = {\n onChangeMarks: () => {}\n };\n\n state = {};\n\n componentDidMount = () => this.setState({ labelNode: this.labelNode });\n\n changeMark = (oldMark, newMark) => {\n const { onChangeMarks, marks } = this.props;\n let newMarks = cloneDeep(marks);\n\n const index = newMarks.findIndex(m => isEqual(m, oldMark));\n\n if (index >= 0 && !isDuplicatedMark(newMark, marks, oldMark)) {\n newMarks.splice(index, 1, newMark);\n\n onChangeMarks(newMarks);\n }\n };\n\n completeMark = markData => {\n const { currentTool, marks } = this.props;\n const buildingMark = marks.filter(m => m.building)[0];\n\n if (!buildingMark || !currentTool) return;\n\n const updatedMark = currentTool.complete(buildingMark, markData);\n\n this.updateMarks(buildingMark, updatedMark);\n };\n\n updateMarks = (existing, update, addIfMissing = false) => {\n const { onChangeMarks, marks } = this.props;\n let newMarks = cloneDeep(marks);\n\n if (!update.building && isDuplicatedMark(update, marks)) {\n return;\n }\n\n const index = newMarks.findIndex(m => isEqual(m, existing));\n\n if (index >= 0) {\n newMarks.splice(index, 1, update);\n\n onChangeMarks(newMarks);\n } else if (addIfMissing) {\n onChangeMarks([...newMarks, update]);\n }\n };\n\n getComponent = mark => {\n if (!mark) return null;\n\n const tool = (this.props.tools || []).find(t => t.type === mark.type);\n\n return (tool && tool.Component) || null;\n };\n\n onBgClick = point => {\n const { x, y } = point;\n const { labelModeEnabled, currentTool, marks } = this.props;\n\n log('[onBgClick] x,y: ', x, y);\n\n if (labelModeEnabled || !currentTool) {\n return;\n }\n\n const buildingMark = marks.filter(m => m.building)[0];\n let updatedMark;\n\n // if the building mark has a different type, we just replace it\n if (buildingMark && currentTool && buildingMark.type === currentTool.type) {\n updatedMark = currentTool.addPoint({ x, y }, { ...buildingMark });\n } else {\n updatedMark = currentTool.addPoint({ x, y }, undefined);\n }\n\n this.updateMarks(buildingMark, updatedMark, true);\n };\n\n render() {\n const {\n axesSettings,\n currentTool,\n coordinatesOnHover,\n size,\n domain,\n backgroundMarks,\n range,\n title,\n labels,\n labelModeEnabled\n } = this.props;\n let { marks } = this.props;\n\n const graphProps = createGraphProps(domain, range, size, () => this.rootNode);\n const maskSize = getMaskSize(size);\n const common = { graphProps, labelModeEnabled };\n\n marks = removeBuildingToolIfCurrentToolDiffers({ marks: marks || [], currentTool });\n\n return (\n <Root rootRef={r => (this.rootNode = r)} title={title} {...common}>\n <Labels value={labels} {...common} />\n <g transform={`translate(${domain.padding}, ${range.padding})`}>\n <Grid {...common} />\n <Axes {...axesSettings} {...common} />\n <Bg {...size} onClick={this.onBgClick} {...common} />\n <mask id=\"myMask\">\n <rect {...maskSize} fill=\"white\" /> {/* TODO hardcoded color */}\n </mask>\n\n <g id=\"marks\" mask=\"url('#myMask')\">\n {(backgroundMarks || []).map((m, index) => {\n const Component = this.getComponent(m);\n const markType = m.type;\n\n return (\n <Component\n key={`${markType}-${index}-bg`}\n mark={{ ...m, disabled: true, isBackground: true }}\n labelNode={this.state.labelNode}\n {...common}\n />\n );\n })}\n\n {marks.map((m, index) => {\n const Component = this.getComponent(m);\n const markType = m.type;\n\n return (\n <Component\n key={`${markType}-${index}`}\n mark={m}\n coordinatesOnHover={coordinatesOnHover}\n onChange={this.changeMark}\n onComplete={this.completeMark}\n onClick={this.onBgClick}\n onDragStart={this.startDrag}\n onDragStop={this.stopDrag}\n labelNode={this.state.labelNode}\n isToolActive={currentTool && markType === currentTool.type}\n {...common}\n />\n );\n })}\n\n <foreignObject\n ref={labelNode => (this.labelNode = labelNode)}\n x=\"0\"\n y=\"0\"\n {...size}\n style={{ pointerEvents: 'none' }}\n />\n </g>\n </g>\n </Root>\n );\n }\n}\n\nexport default Graph;\n"],"mappings":"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"}
package/lib/grid-setup.js CHANGED
@@ -44,13 +44,15 @@ var GridConfig = function GridConfig(props) {
44
44
  gridValue = props.gridValue,
45
45
  gridValues = props.gridValues,
46
46
  _onChange = props.onChange;
47
- var labelStep = displayedFields.labelStep,
48
- step = displayedFields.step;
47
+ var _displayedFields$labe = displayedFields.labelStep,
48
+ labelStep = _displayedFields$labe === void 0 ? {} : _displayedFields$labe,
49
+ _displayedFields$step = displayedFields.step,
50
+ step = _displayedFields$step === void 0 ? {} : _displayedFields$step;
49
51
  return /*#__PURE__*/_react["default"].createElement("div", {
50
52
  className: classes.columnView
51
- }, step.enabled && /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextFieldCustom, {
53
+ }, step && step.enabled && /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextFieldCustom, {
52
54
  className: classes.mediumTextField,
53
- label: step.label,
55
+ label: step.label || '',
54
56
  value: gridValue,
55
57
  customValues: gridValues,
56
58
  variant: "outlined",
@@ -58,9 +60,9 @@ var GridConfig = function GridConfig(props) {
58
60
  onChange: function onChange(e, v) {
59
61
  return _onChange('step', v);
60
62
  }
61
- }), labelStep.enabled && /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextFieldCustom, {
63
+ }), labelStep && labelStep.enabled && /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextFieldCustom, {
62
64
  className: classes.mediumTextField,
63
- label: labelStep.label,
65
+ label: labelStep.label || '',
64
66
  value: labelValue,
65
67
  customValues: labelValues,
66
68
  variant: "outlined",
@@ -81,18 +83,21 @@ var AxisConfig = function AxisConfig(props) {
81
83
  minValue = props.minValue,
82
84
  _onChange2 = props.onChange,
83
85
  type = props.type;
84
- var axisLabel = displayedFields.axisLabel,
85
- min = displayedFields.min,
86
- max = displayedFields.max;
86
+ var _displayedFields$axis = displayedFields.axisLabel,
87
+ axisLabel = _displayedFields$axis === void 0 ? {} : _displayedFields$axis,
88
+ _displayedFields$min = displayedFields.min,
89
+ min = _displayedFields$min === void 0 ? {} : _displayedFields$min,
90
+ _displayedFields$max = displayedFields.max,
91
+ max = _displayedFields$max === void 0 ? {} : _displayedFields$max;
87
92
  var activePlugins = ['bold', 'italic', 'underline', 'strikethrough' // 'languageCharacters'
88
93
  ];
89
94
  return /*#__PURE__*/_react["default"].createElement("div", {
90
95
  className: classes.columnView
91
96
  }, displayHeader && /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
92
97
  variant: "subtitle2"
93
- }, /*#__PURE__*/_react["default"].createElement("i", null, type === 'domain' ? 'x' : 'y'), "-axis"), min.enabled && /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextFieldCustom, {
98
+ }, /*#__PURE__*/_react["default"].createElement("i", null, type === 'domain' ? 'x' : 'y'), "-axis"), min && min.enabled && /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextFieldCustom, {
94
99
  className: classes.mediumTextField,
95
- label: min.label,
100
+ label: min.label || '',
96
101
  value: minValue,
97
102
  min: -10000,
98
103
  max: maxValue - 0.01,
@@ -101,9 +106,9 @@ var AxisConfig = function AxisConfig(props) {
101
106
  onChange: function onChange(e, v) {
102
107
  return _onChange2('min', v);
103
108
  }
104
- }), max.enabled && /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextFieldCustom, {
109
+ }), max && max.enabled && /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextFieldCustom, {
105
110
  className: classes.mediumTextField,
106
- label: max.label,
111
+ label: max.label || '',
107
112
  value: maxValue,
108
113
  min: minValue + 0.01,
109
114
  max: 10000,
@@ -112,8 +117,8 @@ var AxisConfig = function AxisConfig(props) {
112
117
  onChange: function onChange(e, v) {
113
118
  return _onChange2('max', v);
114
119
  }
115
- }), axisLabel.enabled && /*#__PURE__*/_react["default"].createElement(_renderUi.InputContainer, {
116
- label: axisLabel.label,
120
+ }), axisLabel && axisLabel.enabled && /*#__PURE__*/_react["default"].createElement(_renderUi.InputContainer, {
121
+ label: axisLabel.label || '',
117
122
  className: classes.mediumTextField
118
123
  }, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
119
124
  className: classes.axisLabel,
@@ -129,7 +134,8 @@ var AxisConfig = function AxisConfig(props) {
129
134
  var GridSetup = function GridSetup(props) {
130
135
  var classes = props.classes,
131
136
  domain = props.domain,
132
- displayedFields = props.displayedFields,
137
+ _props$displayedField = props.displayedFields,
138
+ displayedFields = _props$displayedField === void 0 ? {} : _props$displayedField,
133
139
  _props$gridValues = props.gridValues,
134
140
  gridValues = _props$gridValues === void 0 ? {} : _props$gridValues,
135
141
  includeAxes = props.includeAxes,
@@ -144,14 +150,22 @@ var GridSetup = function GridSetup(props) {
144
150
  min: 2,
145
151
  max: 41
146
152
  };
147
- var axisLabel = displayedFields.axisLabel,
148
- dimensionsEnabled = displayedFields.dimensionsEnabled,
149
- includeAxesEnabled = displayedFields.includeAxesEnabled,
150
- labelStep = displayedFields.labelStep,
151
- min = displayedFields.min,
152
- max = displayedFields.max,
153
- standardGridEnabled = displayedFields.standardGridEnabled,
154
- step = displayedFields.step;
153
+
154
+ var _ref = displayedFields || {},
155
+ _ref$axisLabel = _ref.axisLabel,
156
+ axisLabel = _ref$axisLabel === void 0 ? {} : _ref$axisLabel,
157
+ dimensionsEnabled = _ref.dimensionsEnabled,
158
+ includeAxesEnabled = _ref.includeAxesEnabled,
159
+ _ref$labelStep = _ref.labelStep,
160
+ labelStep = _ref$labelStep === void 0 ? {} : _ref$labelStep,
161
+ _ref$min = _ref.min,
162
+ min = _ref$min === void 0 ? {} : _ref$min,
163
+ _ref$max = _ref.max,
164
+ max = _ref$max === void 0 ? {} : _ref$max,
165
+ standardGridEnabled = _ref.standardGridEnabled,
166
+ _ref$step = _ref.step,
167
+ step = _ref$step === void 0 ? {} : _ref$step;
168
+
155
169
  var displayAxisType = min.enabled || max.enabled || axisLabel.enabled || step.enabled || labelStep.enabled;
156
170
  var gridConfigFields = {
157
171
  step: step,
@@ -1 +1 @@
1
- {"version":3,"file":"grid-setup.js","names":["GridConfig","props","classes","disabled","displayedFields","labelValue","labelValues","gridValue","gridValues","onChange","labelStep","step","columnView","enabled","mediumTextField","label","e","v","AxisConfig","displayHeader","maxValue","minValue","type","axisLabel","min","max","activePlugins","value","GridSetup","domain","includeAxes","range","size","sizeConstraints","standardGrid","gridProps","dimensionsEnabled","includeAxesEnabled","standardGridEnabled","displayAxisType","gridConfigFields","axisConfigFields","onIncludeAxes","noAxesConfig","axis","updatedRange","updatedDomain","onStandardGridChanged","graph","height","width","onSizeChanged","key","onDomainChanged","onRangeChanged","axesConfig","rowView","text","gridlinesConfig","largeTextField","wrapper","content","dimensions","textField","propTypes","PropTypes","object","bool","styles","theme","display","flexDirection","alignItems","justifyContent","margin","spacing","unit","fontStyle","color","paddingTop","withStyles"],"sources":["../src/grid-setup.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { color, InputContainer } from '@pie-lib/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport Typography from '@material-ui/core/Typography';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport { NumberTextFieldCustom, Toggle } from '@pie-lib/config-ui';\nimport EditableHTML from '@pie-lib/editable-html';\n\nconst GridConfig = props => {\n const {\n classes,\n disabled,\n displayedFields,\n labelValue,\n labelValues,\n gridValue,\n gridValues,\n onChange\n } = props;\n const { labelStep, step } = displayedFields;\n\n return (\n <div className={classes.columnView}>\n {step.enabled && (\n <NumberTextFieldCustom\n className={classes.mediumTextField}\n label={step.label}\n value={gridValue}\n customValues={gridValues}\n variant=\"outlined\"\n disabled={disabled}\n onChange={(e, v) => onChange('step', v)}\n />\n )}\n {labelStep.enabled && (\n <NumberTextFieldCustom\n className={classes.mediumTextField}\n label={labelStep.label}\n value={labelValue}\n customValues={labelValues}\n variant=\"outlined\"\n disabled={disabled}\n onChange={(e, v) => onChange('labelStep', v)}\n />\n )}\n </div>\n );\n};\n\nconst AxisConfig = props => {\n const {\n classes,\n disabled,\n displayedFields,\n displayHeader,\n label,\n maxValue,\n minValue,\n onChange,\n type\n } = props;\n const { axisLabel, min, max } = displayedFields;\n const activePlugins = [\n 'bold',\n 'italic',\n 'underline',\n 'strikethrough'\n // 'languageCharacters'\n ];\n\n return (\n <div className={classes.columnView}>\n {displayHeader && (\n <Typography variant=\"subtitle2\">\n <i>{type === 'domain' ? 'x' : 'y'}</i>\n -axis\n </Typography>\n )}\n {min.enabled && (\n <NumberTextFieldCustom\n className={classes.mediumTextField}\n label={min.label}\n value={minValue}\n min={-10000}\n max={maxValue - 0.01}\n variant=\"outlined\"\n disabled={disabled}\n onChange={(e, v) => onChange('min', v)}\n />\n )}\n {max.enabled && (\n <NumberTextFieldCustom\n className={classes.mediumTextField}\n label={max.label}\n value={maxValue}\n min={minValue + 0.01}\n max={10000}\n variant=\"outlined\"\n disabled={disabled}\n onChange={(e, v) => onChange('max', v)}\n />\n )}\n {axisLabel.enabled && (\n <InputContainer label={axisLabel.label} className={classes.mediumTextField}>\n <EditableHTML\n className={classes.axisLabel}\n onChange={value => onChange('axisLabel', value)}\n markup={label || ''}\n charactersLimit={5}\n activePlugins={activePlugins}\n />\n </InputContainer>\n )}\n </div>\n );\n};\n\nconst GridSetup = props => {\n const {\n classes,\n domain,\n displayedFields,\n gridValues = {},\n includeAxes,\n labelValues = {},\n onChange,\n range,\n size,\n sizeConstraints,\n standardGrid\n } = props;\n const gridProps = { min: 2, max: 41 };\n const {\n axisLabel,\n dimensionsEnabled,\n includeAxesEnabled,\n labelStep,\n min,\n max,\n standardGridEnabled,\n step\n } = displayedFields;\n const displayAxisType =\n min.enabled || max.enabled || axisLabel.enabled || step.enabled || labelStep.enabled;\n const gridConfigFields = { step, labelStep };\n const axisConfigFields = { min, max, axisLabel };\n\n const onIncludeAxes = includeAxes => {\n const noAxesConfig = type => {\n const axis = type === 'domain' ? domain : range;\n\n return {\n min: 1,\n max: axis.max < gridProps.min || axis.max > gridProps.max ? 16 : axis.max,\n step: 1,\n labelStep: 0\n };\n };\n\n const updatedRange = {\n ...range,\n ...(includeAxes ? { labelStep: 1 } : noAxesConfig('range'))\n };\n const updatedDomain = {\n ...domain,\n ...(includeAxes ? { labelStep: 1 } : noAxesConfig('domain'))\n };\n\n onChange({ includeAxes, range: updatedRange, domain: updatedDomain });\n };\n\n const onStandardGridChanged = value => {\n onChange({\n standardGrid: value,\n range: {\n ...domain,\n axisLabel: range.axisLabel\n },\n graph: {\n ...size,\n height: size.width\n }\n });\n };\n\n const onSizeChanged = (key, value) => {\n const graph = { ...size, [key]: value };\n\n if (standardGrid) {\n graph.height = value;\n }\n\n onChange({ graph });\n };\n\n const onDomainChanged = (key, value) => {\n domain[key] = value;\n\n if (standardGrid && key !== 'axisLabel') {\n range[key] = value;\n }\n\n onChange({ domain, range });\n };\n\n const onRangeChanged = (key, value) => {\n range[key] = value;\n\n onChange({ range });\n };\n\n const axesConfig = (\n <React.Fragment>\n <div className={classes.rowView}>\n <AxisConfig\n classes={classes}\n displayedFields={axisConfigFields}\n displayHeader={displayAxisType}\n type=\"domain\"\n minValue={domain.min}\n maxValue={domain.max}\n label={domain.axisLabel}\n includeAxes={includeAxes}\n onChange={onDomainChanged}\n />\n <AxisConfig\n classes={classes}\n displayedFields={axisConfigFields}\n displayHeader={displayAxisType}\n type=\"range\"\n minValue={range.min}\n maxValue={range.max}\n label={range.axisLabel}\n disabled={standardGrid}\n includeAxes={includeAxes}\n onChange={onRangeChanged}\n />\n </div>\n {(min.enabled || max.enabled) && (\n <Typography className={classes.text}>\n If you want the axis to be visible, use a zero or negative Min Value, and a positive Max\n Value\n </Typography>\n )}\n {(step.enabled || labelStep.enabled) && (\n <div className={classes.rowView}>\n <GridConfig\n classes={classes}\n displayedFields={gridConfigFields}\n gridValue={domain.step}\n labelValue={domain.labelStep}\n gridValues={gridValues.domain || []}\n labelValues={labelValues.domain || []}\n onChange={onDomainChanged}\n />\n <GridConfig\n classes={classes}\n disabled={standardGrid}\n displayedFields={gridConfigFields}\n gridValue={range.step}\n labelValue={range.labelStep}\n gridValues={gridValues.range || []}\n labelValues={labelValues.range || []}\n onChange={onRangeChanged}\n />\n </div>\n )}\n {labelStep.enabled && (\n <Typography className={classes.text}>\n For unnumbered gridlines, enter a label interval of 0\n </Typography>\n )}\n </React.Fragment>\n );\n\n const gridlinesConfig = max.enabled ? (\n <div className={classes.columnView}>\n <NumberTextFieldCustom\n className={classes.largeTextField}\n label=\"Number of Horizontal Gridlines\"\n value={domain.max}\n min={!includeAxes && gridProps.min}\n max={!includeAxes && gridProps.max}\n variant=\"outlined\"\n onChange={(e, v) => onDomainChanged('max', v)}\n />\n <NumberTextFieldCustom\n className={classes.largeTextField}\n label=\"Number of Vertical Gridlines\"\n value={range.max}\n min={!includeAxes && gridProps.min}\n max={!includeAxes && gridProps.max}\n variant=\"outlined\"\n disabled={standardGrid}\n onChange={(e, v) => onRangeChanged('max', v)}\n />\n </div>\n ) : null;\n\n return (\n <div className={classes.wrapper}>\n <ExpansionPanel>\n <ExpansionPanelSummary expandIcon={<ExpandMoreIcon />}>\n <Typography variant=\"subtitle1\">Customize Grid Setup</Typography>\n </ExpansionPanelSummary>\n <ExpansionPanelDetails>\n <div className={classes.content}>\n {includeAxesEnabled && (\n <Toggle\n label=\"Include axes and labels?\"\n toggle={onIncludeAxes}\n checked={includeAxes}\n />\n )}\n {standardGridEnabled && (\n <Toggle\n label=\"Constrain to standard coordinate grid?\"\n toggle={onStandardGridChanged}\n checked={standardGrid}\n />\n )}\n {includeAxes ? axesConfig : gridlinesConfig}\n {dimensionsEnabled && (\n <div className={classes.dimensions}>\n <div>\n <Typography>Dimensions(px)</Typography>\n <Typography className={classes.disabled}>\n Min {sizeConstraints.min}, Max {sizeConstraints.max}\n </Typography>\n </div>\n <NumberTextFieldCustom\n className={classes.textField}\n label=\"Width\"\n value={size.width}\n min={sizeConstraints.min}\n max={sizeConstraints.max}\n step={sizeConstraints.step}\n variant=\"outlined\"\n onChange={(e, v) => onSizeChanged('width', v)}\n />\n <NumberTextFieldCustom\n className={classes.textField}\n label=\"Height\"\n value={size.height}\n min={sizeConstraints.min}\n max={sizeConstraints.max}\n step={sizeConstraints.step}\n variant=\"outlined\"\n disabled={standardGrid}\n onChange={(e, v) => onSizeChanged('height', v)}\n />\n </div>\n )}\n </div>\n </ExpansionPanelDetails>\n </ExpansionPanel>\n </div>\n );\n};\n\nGridSetup.propTypes = {\n classes: PropTypes.object,\n domain: PropTypes.object,\n displayedFields: PropTypes.object,\n gridValues: PropTypes.object,\n includeAxes: PropTypes.bool,\n labelValues: PropTypes.object,\n onChange: PropTypes.function,\n range: PropTypes.object,\n size: PropTypes.object,\n sizeConstraints: PropTypes.object,\n standardGrid: PropTypes.bool\n};\n\nconst styles = theme => ({\n wrapper: {\n width: '450px'\n },\n content: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%'\n },\n columnView: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center'\n },\n rowView: {\n display: 'flex',\n justifyContent: 'space-around',\n alignItems: 'center'\n },\n textField: {\n width: '130px',\n margin: `${theme.spacing.unit}px ${theme.spacing.unit / 2}px`\n },\n mediumTextField: {\n width: '160px',\n margin: `${theme.spacing.unit}px ${theme.spacing.unit / 2}px`\n },\n largeTextField: {\n width: '230px',\n margin: `${theme.spacing.unit}px ${theme.spacing.unit / 2}px`\n },\n text: {\n fontStyle: 'italic',\n margin: `${theme.spacing.unit}px 0`\n },\n dimensions: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center'\n },\n disabled: {\n color: color.disabled()\n },\n axisLabel: {\n paddingTop: theme.spacing.unit * 2\n }\n});\n\nexport default withStyles(styles)(GridSetup);\n"],"mappings":"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"}
1
+ {"version":3,"file":"grid-setup.js","names":["GridConfig","props","classes","disabled","displayedFields","labelValue","labelValues","gridValue","gridValues","onChange","labelStep","step","columnView","enabled","mediumTextField","label","e","v","AxisConfig","displayHeader","maxValue","minValue","type","axisLabel","min","max","activePlugins","value","GridSetup","domain","includeAxes","range","size","sizeConstraints","standardGrid","gridProps","dimensionsEnabled","includeAxesEnabled","standardGridEnabled","displayAxisType","gridConfigFields","axisConfigFields","onIncludeAxes","noAxesConfig","axis","updatedRange","updatedDomain","onStandardGridChanged","graph","height","width","onSizeChanged","key","onDomainChanged","onRangeChanged","axesConfig","rowView","text","gridlinesConfig","largeTextField","wrapper","content","dimensions","textField","propTypes","PropTypes","object","bool","styles","theme","display","flexDirection","alignItems","justifyContent","margin","spacing","unit","fontStyle","color","paddingTop","withStyles"],"sources":["../src/grid-setup.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { color, InputContainer } from '@pie-lib/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport Typography from '@material-ui/core/Typography';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport { NumberTextFieldCustom, Toggle } from '@pie-lib/config-ui';\nimport EditableHTML from '@pie-lib/editable-html';\n\nconst GridConfig = props => {\n const {\n classes,\n disabled,\n displayedFields,\n labelValue,\n labelValues,\n gridValue,\n gridValues,\n onChange\n } = props;\n const { labelStep = {}, step = {} } = displayedFields;\n\n return (\n <div className={classes.columnView}>\n {step && step.enabled && (\n <NumberTextFieldCustom\n className={classes.mediumTextField}\n label={step.label || ''}\n value={gridValue}\n customValues={gridValues}\n variant=\"outlined\"\n disabled={disabled}\n onChange={(e, v) => onChange('step', v)}\n />\n )}\n {labelStep && labelStep.enabled && (\n <NumberTextFieldCustom\n className={classes.mediumTextField}\n label={labelStep.label || ''}\n value={labelValue}\n customValues={labelValues}\n variant=\"outlined\"\n disabled={disabled}\n onChange={(e, v) => onChange('labelStep', v)}\n />\n )}\n </div>\n );\n};\n\nconst AxisConfig = props => {\n const {\n classes,\n disabled,\n displayedFields,\n displayHeader,\n label,\n maxValue,\n minValue,\n onChange,\n type\n } = props;\n const { axisLabel = {}, min = {}, max = {} } = displayedFields;\n const activePlugins = [\n 'bold',\n 'italic',\n 'underline',\n 'strikethrough'\n // 'languageCharacters'\n ];\n\n return (\n <div className={classes.columnView}>\n {displayHeader && (\n <Typography variant=\"subtitle2\">\n <i>{type === 'domain' ? 'x' : 'y'}</i>\n -axis\n </Typography>\n )}\n {min && min.enabled && (\n <NumberTextFieldCustom\n className={classes.mediumTextField}\n label={min.label || ''}\n value={minValue}\n min={-10000}\n max={maxValue - 0.01}\n variant=\"outlined\"\n disabled={disabled}\n onChange={(e, v) => onChange('min', v)}\n />\n )}\n {max && max.enabled && (\n <NumberTextFieldCustom\n className={classes.mediumTextField}\n label={max.label || ''}\n value={maxValue}\n min={minValue + 0.01}\n max={10000}\n variant=\"outlined\"\n disabled={disabled}\n onChange={(e, v) => onChange('max', v)}\n />\n )}\n {axisLabel && axisLabel.enabled && (\n <InputContainer label={axisLabel.label || ''} className={classes.mediumTextField}>\n <EditableHTML\n className={classes.axisLabel}\n onChange={value => onChange('axisLabel', value)}\n markup={label || ''}\n charactersLimit={5}\n activePlugins={activePlugins}\n />\n </InputContainer>\n )}\n </div>\n );\n};\n\nconst GridSetup = props => {\n const {\n classes,\n domain,\n displayedFields = {},\n gridValues = {},\n includeAxes,\n labelValues = {},\n onChange,\n range,\n size,\n sizeConstraints,\n standardGrid\n } = props;\n const gridProps = { min: 2, max: 41 };\n const {\n axisLabel = {},\n dimensionsEnabled,\n includeAxesEnabled,\n labelStep = {},\n min = {},\n max = {},\n standardGridEnabled,\n step = {}\n } = displayedFields || {};\n const displayAxisType =\n min.enabled || max.enabled || axisLabel.enabled || step.enabled || labelStep.enabled;\n const gridConfigFields = { step, labelStep };\n const axisConfigFields = { min, max, axisLabel };\n\n const onIncludeAxes = includeAxes => {\n const noAxesConfig = type => {\n const axis = type === 'domain' ? domain : range;\n\n return {\n min: 1,\n max: axis.max < gridProps.min || axis.max > gridProps.max ? 16 : axis.max,\n step: 1,\n labelStep: 0\n };\n };\n\n const updatedRange = {\n ...range,\n ...(includeAxes ? { labelStep: 1 } : noAxesConfig('range'))\n };\n const updatedDomain = {\n ...domain,\n ...(includeAxes ? { labelStep: 1 } : noAxesConfig('domain'))\n };\n\n onChange({ includeAxes, range: updatedRange, domain: updatedDomain });\n };\n\n const onStandardGridChanged = value => {\n onChange({\n standardGrid: value,\n range: {\n ...domain,\n axisLabel: range.axisLabel\n },\n graph: {\n ...size,\n height: size.width\n }\n });\n };\n\n const onSizeChanged = (key, value) => {\n const graph = { ...size, [key]: value };\n\n if (standardGrid) {\n graph.height = value;\n }\n\n onChange({ graph });\n };\n\n const onDomainChanged = (key, value) => {\n domain[key] = value;\n\n if (standardGrid && key !== 'axisLabel') {\n range[key] = value;\n }\n\n onChange({ domain, range });\n };\n\n const onRangeChanged = (key, value) => {\n range[key] = value;\n\n onChange({ range });\n };\n\n const axesConfig = (\n <React.Fragment>\n <div className={classes.rowView}>\n <AxisConfig\n classes={classes}\n displayedFields={axisConfigFields}\n displayHeader={displayAxisType}\n type=\"domain\"\n minValue={domain.min}\n maxValue={domain.max}\n label={domain.axisLabel}\n includeAxes={includeAxes}\n onChange={onDomainChanged}\n />\n <AxisConfig\n classes={classes}\n displayedFields={axisConfigFields}\n displayHeader={displayAxisType}\n type=\"range\"\n minValue={range.min}\n maxValue={range.max}\n label={range.axisLabel}\n disabled={standardGrid}\n includeAxes={includeAxes}\n onChange={onRangeChanged}\n />\n </div>\n {(min.enabled || max.enabled) && (\n <Typography className={classes.text}>\n If you want the axis to be visible, use a zero or negative Min Value, and a positive Max\n Value\n </Typography>\n )}\n {(step.enabled || labelStep.enabled) && (\n <div className={classes.rowView}>\n <GridConfig\n classes={classes}\n displayedFields={gridConfigFields}\n gridValue={domain.step}\n labelValue={domain.labelStep}\n gridValues={gridValues.domain || []}\n labelValues={labelValues.domain || []}\n onChange={onDomainChanged}\n />\n <GridConfig\n classes={classes}\n disabled={standardGrid}\n displayedFields={gridConfigFields}\n gridValue={range.step}\n labelValue={range.labelStep}\n gridValues={gridValues.range || []}\n labelValues={labelValues.range || []}\n onChange={onRangeChanged}\n />\n </div>\n )}\n {labelStep.enabled && (\n <Typography className={classes.text}>\n For unnumbered gridlines, enter a label interval of 0\n </Typography>\n )}\n </React.Fragment>\n );\n\n const gridlinesConfig = max.enabled ? (\n <div className={classes.columnView}>\n <NumberTextFieldCustom\n className={classes.largeTextField}\n label=\"Number of Horizontal Gridlines\"\n value={domain.max}\n min={!includeAxes && gridProps.min}\n max={!includeAxes && gridProps.max}\n variant=\"outlined\"\n onChange={(e, v) => onDomainChanged('max', v)}\n />\n <NumberTextFieldCustom\n className={classes.largeTextField}\n label=\"Number of Vertical Gridlines\"\n value={range.max}\n min={!includeAxes && gridProps.min}\n max={!includeAxes && gridProps.max}\n variant=\"outlined\"\n disabled={standardGrid}\n onChange={(e, v) => onRangeChanged('max', v)}\n />\n </div>\n ) : null;\n\n return (\n <div className={classes.wrapper}>\n <ExpansionPanel>\n <ExpansionPanelSummary expandIcon={<ExpandMoreIcon />}>\n <Typography variant=\"subtitle1\">Customize Grid Setup</Typography>\n </ExpansionPanelSummary>\n <ExpansionPanelDetails>\n <div className={classes.content}>\n {includeAxesEnabled && (\n <Toggle\n label=\"Include axes and labels?\"\n toggle={onIncludeAxes}\n checked={includeAxes}\n />\n )}\n {standardGridEnabled && (\n <Toggle\n label=\"Constrain to standard coordinate grid?\"\n toggle={onStandardGridChanged}\n checked={standardGrid}\n />\n )}\n {includeAxes ? axesConfig : gridlinesConfig}\n {dimensionsEnabled && (\n <div className={classes.dimensions}>\n <div>\n <Typography>Dimensions(px)</Typography>\n <Typography className={classes.disabled}>\n Min {sizeConstraints.min}, Max {sizeConstraints.max}\n </Typography>\n </div>\n <NumberTextFieldCustom\n className={classes.textField}\n label=\"Width\"\n value={size.width}\n min={sizeConstraints.min}\n max={sizeConstraints.max}\n step={sizeConstraints.step}\n variant=\"outlined\"\n onChange={(e, v) => onSizeChanged('width', v)}\n />\n <NumberTextFieldCustom\n className={classes.textField}\n label=\"Height\"\n value={size.height}\n min={sizeConstraints.min}\n max={sizeConstraints.max}\n step={sizeConstraints.step}\n variant=\"outlined\"\n disabled={standardGrid}\n onChange={(e, v) => onSizeChanged('height', v)}\n />\n </div>\n )}\n </div>\n </ExpansionPanelDetails>\n </ExpansionPanel>\n </div>\n );\n};\n\nGridSetup.propTypes = {\n classes: PropTypes.object,\n domain: PropTypes.object,\n displayedFields: PropTypes.object,\n gridValues: PropTypes.object,\n includeAxes: PropTypes.bool,\n labelValues: PropTypes.object,\n onChange: PropTypes.function,\n range: PropTypes.object,\n size: PropTypes.object,\n sizeConstraints: PropTypes.object,\n standardGrid: PropTypes.bool\n};\n\nconst styles = theme => ({\n wrapper: {\n width: '450px'\n },\n content: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%'\n },\n columnView: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center'\n },\n rowView: {\n display: 'flex',\n justifyContent: 'space-around',\n alignItems: 'center'\n },\n textField: {\n width: '130px',\n margin: `${theme.spacing.unit}px ${theme.spacing.unit / 2}px`\n },\n mediumTextField: {\n width: '160px',\n margin: `${theme.spacing.unit}px ${theme.spacing.unit / 2}px`\n },\n largeTextField: {\n width: '230px',\n margin: `${theme.spacing.unit}px ${theme.spacing.unit / 2}px`\n },\n text: {\n fontStyle: 'italic',\n margin: `${theme.spacing.unit}px 0`\n },\n dimensions: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center'\n },\n disabled: {\n color: color.disabled()\n },\n axisLabel: {\n paddingTop: theme.spacing.unit * 2\n }\n});\n\nexport default withStyles(styles)(GridSetup);\n"],"mappings":"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"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "2.4.3-next.352+ab342faa",
6
+ "version": "2.4.3-next.362+7a9cae3b",
7
7
  "description": "Graphing components",
8
8
  "keywords": [
9
9
  "react",
@@ -43,6 +43,6 @@
43
43
  "peerDependencies": {
44
44
  "react": "^16.8.1"
45
45
  },
46
- "gitHead": "ab342faa483f7feb92c134edfe2205ab219d7fcb",
46
+ "gitHead": "7a9cae3b397dc7bf43bae23cf4b582fd8f73bafa",
47
47
  "scripts": {}
48
48
  }
@@ -10,6 +10,13 @@ import ToolMenu from './tool-menu';
10
10
  import Graph, { graphPropTypes } from './graph';
11
11
  import UndoRedo from './undo-redo';
12
12
  import { allTools, toolsArr } from './tools';
13
+ import {
14
+ ExpansionPanel,
15
+ ExpansionPanelDetails,
16
+ ExpansionPanelSummary,
17
+ Typography
18
+ } from '@material-ui/core';
19
+ import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
13
20
 
14
21
  export const setToolbarAvailability = toolbarTools =>
15
22
  toolsArr.map(tA => ({ ...tA, toolbar: !!toolbarTools.find(t => t === tA.type) })) || [];
@@ -27,6 +34,26 @@ export const filterByVisibleToolTypes = (toolbarTools, marks) =>
27
34
 
28
35
  const getDefaultCurrentTool = toolType => toolsArr.find(tool => tool.type === toolType) || null;
29
36
 
37
+ const Collapsible = ({ classes, children, title }) => (
38
+ <ExpansionPanel
39
+ elevation={0}
40
+ className={classes.expansionPanel}
41
+ disabledGutters={true}
42
+ square={true}
43
+ >
44
+ <ExpansionPanelSummary
45
+ classes={{
46
+ root: classes.summaryRoot,
47
+ content: classes.summaryContent
48
+ }}
49
+ expandIcon={<ExpandMoreIcon />}
50
+ >
51
+ <Typography variant="subheading">{title}</Typography>
52
+ </ExpansionPanelSummary>
53
+ <ExpansionPanelDetails className={classes.details}>{children}</ExpansionPanelDetails>
54
+ </ExpansionPanel>
55
+ );
56
+
30
57
  export class GraphWithControls extends React.Component {
31
58
  static propTypes = {
32
59
  ...graphPropTypes,
@@ -36,7 +63,11 @@ export class GraphWithControls extends React.Component {
36
63
  toolbarTools: PropTypes.arrayOf(PropTypes.string) // array of tool types that have to be displayed in the toolbar, same shape as 'allTools'
37
64
  };
38
65
 
39
- static defaultProps = { toolbarTools: [] };
66
+ static defaultProps = {
67
+ collapsibleToolbar: false,
68
+ collapsibleToolbarTitle: '',
69
+ toolbarTools: []
70
+ };
40
71
 
41
72
  constructor(props) {
42
73
  super(props);
@@ -64,12 +95,13 @@ export class GraphWithControls extends React.Component {
64
95
 
65
96
  render() {
66
97
  let { currentTool, labelModeEnabled } = this.state;
67
-
68
98
  const {
69
99
  axesSettings,
70
100
  classes,
71
101
  className,
72
102
  coordinatesOnHover,
103
+ collapsibleToolbar,
104
+ collapsibleToolbarTitle,
73
105
  disabled,
74
106
  domain,
75
107
  labels,
@@ -81,7 +113,6 @@ export class GraphWithControls extends React.Component {
81
113
  size,
82
114
  title
83
115
  } = this.props;
84
-
85
116
  let { backgroundMarks, marks, toolbarTools } = this.props;
86
117
 
87
118
  // make sure only valid tool types are kept (string) and without duplicates
@@ -100,19 +131,31 @@ export class GraphWithControls extends React.Component {
100
131
  currentTool = getAvailableTool(tools);
101
132
  }
102
133
 
134
+ const graphActions = (
135
+ <React.Fragment>
136
+ <ToolMenu
137
+ currentToolType={currentTool && currentTool.type}
138
+ disabled={!!disabled}
139
+ labelModeEnabled={labelModeEnabled}
140
+ onChange={tool => this.changeCurrentTool(tool, tools)}
141
+ onToggleLabelMode={this.toggleLabelMode}
142
+ toolbarTools={toolbarTools}
143
+ />
144
+
145
+ {!disabled && <UndoRedo onUndo={onUndo} onRedo={onRedo} onReset={onReset} />}
146
+ </React.Fragment>
147
+ );
148
+
103
149
  return (
104
150
  <div className={classNames(classes.graphWithControls, className)}>
105
151
  <div className={classes.controls}>
106
- <ToolMenu
107
- currentToolType={currentTool && currentTool.type}
108
- disabled={!!disabled}
109
- labelModeEnabled={labelModeEnabled}
110
- onChange={tool => this.changeCurrentTool(tool, tools)}
111
- onToggleLabelMode={this.toggleLabelMode}
112
- toolbarTools={toolbarTools}
113
- />
114
-
115
- {!disabled && <UndoRedo onUndo={onUndo} onRedo={onRedo} onReset={onReset} />}
152
+ {collapsibleToolbar ? (
153
+ <Collapsible classes={classes} title={collapsibleToolbarTitle}>
154
+ {graphActions}
155
+ </Collapsible>
156
+ ) : (
157
+ graphActions
158
+ )}
116
159
  </div>
117
160
 
118
161
  <div ref={r => (this.labelNode = r)} />
@@ -153,6 +196,20 @@ const styles = theme => ({
153
196
  '& button': {
154
197
  fontSize: theme.typography.fontSize
155
198
  }
199
+ },
200
+ expansionPanel: {
201
+ backgroundColor: color.primaryLight()
202
+ },
203
+ summaryRoot: {
204
+ padding: `0 ${theme.spacing.unit}px`,
205
+ minHeight: '32px !important'
206
+ },
207
+ summaryContent: {
208
+ margin: '4px 0 !important'
209
+ },
210
+ details: {
211
+ padding: 0,
212
+ marginTop: theme.spacing.unit
156
213
  }
157
214
  });
158
215
 
package/src/graph.jsx CHANGED
@@ -18,6 +18,8 @@ export const graphPropTypes = {
18
18
  axesSettings: PropTypes.shape(AxisPropTypes),
19
19
  backgroundMarks: PropTypes.array,
20
20
  className: PropTypes.string,
21
+ collapsibleToolbar: PropTypes.bool,
22
+ collapsibleToolbarTitle: PropTypes.string,
21
23
  domain: types.DomainType,
22
24
  labels: PropTypes.shape(LabelType),
23
25
  labelModeEnabled: PropTypes.bool,
@@ -21,14 +21,14 @@ const GridConfig = props => {
21
21
  gridValues,
22
22
  onChange
23
23
  } = props;
24
- const { labelStep, step } = displayedFields;
24
+ const { labelStep = {}, step = {} } = displayedFields;
25
25
 
26
26
  return (
27
27
  <div className={classes.columnView}>
28
- {step.enabled && (
28
+ {step && step.enabled && (
29
29
  <NumberTextFieldCustom
30
30
  className={classes.mediumTextField}
31
- label={step.label}
31
+ label={step.label || ''}
32
32
  value={gridValue}
33
33
  customValues={gridValues}
34
34
  variant="outlined"
@@ -36,10 +36,10 @@ const GridConfig = props => {
36
36
  onChange={(e, v) => onChange('step', v)}
37
37
  />
38
38
  )}
39
- {labelStep.enabled && (
39
+ {labelStep && labelStep.enabled && (
40
40
  <NumberTextFieldCustom
41
41
  className={classes.mediumTextField}
42
- label={labelStep.label}
42
+ label={labelStep.label || ''}
43
43
  value={labelValue}
44
44
  customValues={labelValues}
45
45
  variant="outlined"
@@ -63,7 +63,7 @@ const AxisConfig = props => {
63
63
  onChange,
64
64
  type
65
65
  } = props;
66
- const { axisLabel, min, max } = displayedFields;
66
+ const { axisLabel = {}, min = {}, max = {} } = displayedFields;
67
67
  const activePlugins = [
68
68
  'bold',
69
69
  'italic',
@@ -80,10 +80,10 @@ const AxisConfig = props => {
80
80
  -axis
81
81
  </Typography>
82
82
  )}
83
- {min.enabled && (
83
+ {min && min.enabled && (
84
84
  <NumberTextFieldCustom
85
85
  className={classes.mediumTextField}
86
- label={min.label}
86
+ label={min.label || ''}
87
87
  value={minValue}
88
88
  min={-10000}
89
89
  max={maxValue - 0.01}
@@ -92,10 +92,10 @@ const AxisConfig = props => {
92
92
  onChange={(e, v) => onChange('min', v)}
93
93
  />
94
94
  )}
95
- {max.enabled && (
95
+ {max && max.enabled && (
96
96
  <NumberTextFieldCustom
97
97
  className={classes.mediumTextField}
98
- label={max.label}
98
+ label={max.label || ''}
99
99
  value={maxValue}
100
100
  min={minValue + 0.01}
101
101
  max={10000}
@@ -104,8 +104,8 @@ const AxisConfig = props => {
104
104
  onChange={(e, v) => onChange('max', v)}
105
105
  />
106
106
  )}
107
- {axisLabel.enabled && (
108
- <InputContainer label={axisLabel.label} className={classes.mediumTextField}>
107
+ {axisLabel && axisLabel.enabled && (
108
+ <InputContainer label={axisLabel.label || ''} className={classes.mediumTextField}>
109
109
  <EditableHTML
110
110
  className={classes.axisLabel}
111
111
  onChange={value => onChange('axisLabel', value)}
@@ -123,7 +123,7 @@ const GridSetup = props => {
123
123
  const {
124
124
  classes,
125
125
  domain,
126
- displayedFields,
126
+ displayedFields = {},
127
127
  gridValues = {},
128
128
  includeAxes,
129
129
  labelValues = {},
@@ -135,15 +135,15 @@ const GridSetup = props => {
135
135
  } = props;
136
136
  const gridProps = { min: 2, max: 41 };
137
137
  const {
138
- axisLabel,
138
+ axisLabel = {},
139
139
  dimensionsEnabled,
140
140
  includeAxesEnabled,
141
- labelStep,
142
- min,
143
- max,
141
+ labelStep = {},
142
+ min = {},
143
+ max = {},
144
144
  standardGridEnabled,
145
- step
146
- } = displayedFields;
145
+ step = {}
146
+ } = displayedFields || {};
147
147
  const displayAxisType =
148
148
  min.enabled || max.enabled || axisLabel.enabled || step.enabled || labelStep.enabled;
149
149
  const gridConfigFields = { step, labelStep };