@pie-lib/graphing 2.11.6 → 2.11.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,19 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [2.11.7](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.11.6...@pie-lib/graphing@2.11.7) (2022-12-19)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **garphing:** update model when polygon labels have changed PD-993 ([cb8e0a7](https://github.com/pie-framework/pie-lib/commit/cb8e0a75533a3944d81984d0775b3b79134265f2))
12
+ * **graphing:** adjust clickable area for plotable shapes PD-1958 ([6396096](https://github.com/pie-framework/pie-lib/commit/63960962aea5db5fa6584e464e5478972db7feb8))
13
+ * **graphing:** update graph store if marks are changed ([90d7176](https://github.com/pie-framework/pie-lib/commit/90d717675abc32788086edd02fcd96706b5a50f6))
14
+
15
+
16
+
17
+
18
+
6
19
  ## [2.11.6](https://github.com/pie-framework/pie-lib/compare/@pie-lib/graphing@2.11.5...@pie-lib/graphing@2.11.6) (2022-12-06)
7
20
 
8
21
  **Note:** Version bump only for package @pie-lib/graphing
package/lib/bg.js CHANGED
@@ -107,15 +107,18 @@ var Bg = /*#__PURE__*/function (_React$Component) {
107
107
 
108
108
  var _this$props2 = this.props,
109
109
  width = _this$props2.width,
110
- height = _this$props2.height;
110
+ height = _this$props2.height,
111
+ graphProps = _this$props2.graphProps;
112
+ var padding = (0, _utils.thinnerShapesNeeded)(graphProps) ? 6 : 10;
111
113
  return /*#__PURE__*/_react["default"].createElement("rect", {
112
114
  ref: function ref(rect) {
113
115
  return _this2.rect = rect;
114
116
  },
117
+ transform: "translate(-".concat(padding, ", -").concat(padding, ")"),
115
118
  fill: "red",
116
119
  fillOpacity: "0.0",
117
- width: width,
118
- height: height
120
+ width: width + padding * 2,
121
+ height: height + padding * 2
119
122
  });
120
123
  }
121
124
  }]);
package/lib/bg.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/bg.jsx"],"names":["Bg","rect","props","onClick","graphProps","scale","coords","_groups","x","invert","y","rowTicks","range","columnTicks","domain","closest","ticks","value","length","reduce","prev","curr","currentDistance","Math","abs","previousDistance","snapped","indexOf","on","onRectClick","bind","nextProps","utils","isDomainRangeEqual","width","height","React","Component","PropTypes","number","isRequired","func","types","GraphPropsType"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { select, mouse } from 'd3-selection';\nimport { types, utils } from '@pie-lib/plot';\nimport { getTickValues } from './utils';\n\nexport default class Bg extends React.Component {\n static propTypes = {\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n onClick: PropTypes.func.isRequired,\n graphProps: types.GraphPropsType.isRequired,\n };\n\n static defaultProps = {};\n\n componentDidMount() {\n const rect = select(this.rect);\n rect.on('click', this.onRectClick.bind(this, rect));\n }\n\n shouldComponentUpdate(nextProps) {\n return (\n !utils.isDomainRangeEqual(this.props.graphProps, nextProps.graphProps) ||\n this.props.width !== nextProps.width ||\n this.props.height !== nextProps.height\n );\n }\n /**\n * Note: we use d3 click + mouse to give us domain values directly.\n * Saves us having to calculate them ourselves from a MouseEvent.\n */\n onRectClick = (rect) => {\n const { onClick, graphProps } = this.props;\n const { scale } = graphProps;\n const coords = mouse(rect._groups[0][0]);\n const x = scale.x.invert(coords[0]);\n const y = scale.y.invert(coords[1]);\n const rowTicks = getTickValues(graphProps.range);\n const columnTicks = getTickValues(graphProps.domain);\n\n const closest = (ticks, value) => {\n return (\n ticks.length &&\n ticks.reduce((prev, curr) => {\n const currentDistance = Math.abs(curr - value);\n const previousDistance = Math.abs(prev - value);\n return currentDistance <= previousDistance ? curr : prev;\n })\n );\n };\n\n let snapped = {};\n\n if (columnTicks.indexOf(x) >= 0 && rowTicks.indexOf(y) >= 0) {\n snapped.x = x;\n snapped.y = y;\n } else {\n snapped.x = closest(columnTicks, x);\n snapped.y = closest(rowTicks, y);\n }\n\n onClick(snapped);\n };\n\n render() {\n const { width, height } = this.props;\n return <rect ref={(rect) => (this.rect = rect)} fill=\"red\" fillOpacity=\"0.0\" width={width} height={height} />;\n }\n}\n"],"file":"bg.js"}
1
+ {"version":3,"sources":["../src/bg.jsx"],"names":["Bg","rect","props","onClick","graphProps","scale","coords","_groups","x","invert","y","rowTicks","range","columnTicks","domain","closest","ticks","value","length","reduce","prev","curr","currentDistance","Math","abs","previousDistance","snapped","indexOf","on","onRectClick","bind","nextProps","utils","isDomainRangeEqual","width","height","padding","React","Component","PropTypes","number","isRequired","func","types","GraphPropsType"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { select, mouse } from 'd3-selection';\nimport { types, utils } from '@pie-lib/plot';\nimport { getTickValues, thinnerShapesNeeded } from './utils';\n\nexport default class Bg extends React.Component {\n static propTypes = {\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n onClick: PropTypes.func.isRequired,\n graphProps: types.GraphPropsType.isRequired,\n };\n\n static defaultProps = {};\n\n componentDidMount() {\n const rect = select(this.rect);\n\n rect.on('click', this.onRectClick.bind(this, rect));\n }\n\n shouldComponentUpdate(nextProps) {\n return (\n !utils.isDomainRangeEqual(this.props.graphProps, nextProps.graphProps) ||\n this.props.width !== nextProps.width ||\n this.props.height !== nextProps.height\n );\n }\n /**\n * Note: we use d3 click + mouse to give us domain values directly.\n * Saves us having to calculate them ourselves from a MouseEvent.\n */\n onRectClick = (rect) => {\n const { onClick, graphProps } = this.props;\n const { scale } = graphProps;\n const coords = mouse(rect._groups[0][0]);\n const x = scale.x.invert(coords[0]);\n const y = scale.y.invert(coords[1]);\n const rowTicks = getTickValues(graphProps.range);\n const columnTicks = getTickValues(graphProps.domain);\n\n const closest = (ticks, value) => {\n return (\n ticks.length &&\n ticks.reduce((prev, curr) => {\n const currentDistance = Math.abs(curr - value);\n const previousDistance = Math.abs(prev - value);\n\n return currentDistance <= previousDistance ? curr : prev;\n })\n );\n };\n\n let snapped = {};\n\n if (columnTicks.indexOf(x) >= 0 && rowTicks.indexOf(y) >= 0) {\n snapped.x = x;\n snapped.y = y;\n } else {\n snapped.x = closest(columnTicks, x);\n snapped.y = closest(rowTicks, y);\n }\n\n onClick(snapped);\n };\n\n render() {\n const { width, height, graphProps } = this.props;\n const padding = thinnerShapesNeeded(graphProps) ? 6 : 10;\n\n return (\n <rect\n ref={(rect) => (this.rect = rect)}\n transform={`translate(-${padding}, -${padding})`}\n fill=\"red\"\n fillOpacity=\"0.0\"\n width={width + padding * 2}\n height={height + padding * 2}\n />\n );\n }\n}\n"],"file":"bg.js"}
@@ -112,6 +112,15 @@ var Root = /*#__PURE__*/function (_React$Component) {
112
112
  }
113
113
 
114
114
  (0, _createClass2["default"])(Root, [{
115
+ key: "componentDidUpdate",
116
+ value: function componentDidUpdate(prevProps) {
117
+ var marks = this.props.marks;
118
+
119
+ if (!(0, _isEqual["default"])(prevProps.marks, marks)) {
120
+ this.store.dispatch((0, _actions.changeMarks)(marks));
121
+ }
122
+ }
123
+ }, {
115
124
  key: "render",
116
125
  value: function render() {
117
126
  // eslint-disable-next-line no-unused-vars
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/container/index.jsx"],"names":["mapStateToProps","s","marks","present","mapDispatchToProps","dispatch","onChangeMarks","m","onUndo","ActionCreators","undo","onRedo","redo","onReset","GraphContainer","GraphWithControls","Root","props","storeState","store","getState","r","subscribe","onStoreChange","rest","correctnessSet","find","correctness","React","Component","PropTypes","func","array"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;AAEA,IAAMA,eAAe,GAAG,SAAlBA,eAAkB,CAACC,CAAD;AAAA,SAAQ;AAC9BC,IAAAA,KAAK,EAAED,CAAC,CAACC,KAAF,CAAQC;AADe,GAAR;AAAA,CAAxB;;AAIA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,QAAD;AAAA,SAAe;AACxCC,IAAAA,aAAa,EAAE,uBAACC,CAAD;AAAA,aAAOF,QAAQ,CAAC,0BAAYE,CAAZ,CAAD,CAAf;AAAA,KADyB;AAExCC,IAAAA,MAAM,EAAE;AAAA,aAAMH,QAAQ,CAACI,0BAAeC,IAAf,EAAD,CAAd;AAAA,KAFgC;AAGxCC,IAAAA,MAAM,EAAE;AAAA,aAAMN,QAAQ,CAACI,0BAAeG,IAAf,EAAD,CAAd;AAAA,KAHgC;AAIxCC,IAAAA,OAAO,EAAE;AAAA,aAAMR,QAAQ,CAAC,0BAAY,EAAZ,CAAD,CAAd;AAAA;AAJ+B,GAAf;AAAA,CAA3B;;AAOO,IAAMS,cAAc,GAAG,yBAAQd,eAAR,EAAyBI,kBAAzB,EAA6CW,6BAA7C,CAAvB;AAEP;AACA;AACA;AACA;;;;IACMC,I;;;;;AAMJ,gBAAYC,KAAZ,EAAmB;AAAA;;AAAA;AACjB,8BAAMA,KAAN;AADiB,sGASH,YAAM;AACpB,wBAAiC,MAAKA,KAAtC;AAAA,UAAQf,KAAR,eAAQA,KAAR;AAAA,UAAeI,aAAf,eAAeA,aAAf;;AACA,UAAMY,UAAU,GAAG,MAAKC,KAAL,CAAWC,QAAX,EAAnB;;AAEA,UAAI,CAAC,yBAAQF,UAAU,CAAChB,KAAX,CAAiBC,OAAzB,EAAkCD,KAAlC,CAAL,EAA+C;AAC7CI,QAAAA,aAAa,CAACY,UAAU,CAAChB,KAAX,CAAiBC,OAAlB,CAAb;AACD;AACF,KAhBkB;AAGjB,QAAMkB,CAAC,GAAG,0BAAV;AACA,UAAKF,KAAL,GAAa,wBAAYE,CAAZ,EAAe;AAAEnB,MAAAA,KAAK,EAAEe,KAAK,CAACf;AAAf,KAAf,CAAb;;AAEA,UAAKiB,KAAL,CAAWG,SAAX,CAAqB,MAAKC,aAA1B;;AANiB;AAOlB;;;;WAWD,kBAAS;AACP;AACA,yBAA0C,KAAKN,KAA/C;AAAA,UAAQX,aAAR,gBAAQA,aAAR;AAAA,UAAuBJ,KAAvB,gBAAuBA,KAAvB;AAAA,UAAiCsB,IAAjC;AACA,UAAMC,cAAc,GAAGvB,KAAK,IAAIA,KAAK,CAACwB,IAAN,CAAW,UAACnB,CAAD;AAAA,eAAOA,CAAC,CAACoB,WAAT;AAAA,OAAX,CAAhC;;AAEA,UAAIF,cAAJ,EAAoB;AAClB,4BAAO,gCAAC,6BAAD,gCAAuBD,IAAvB;AAA6B,UAAA,KAAK,EAAEtB,KAApC;AAA2C,UAAA,QAAQ,EAAEuB;AAArD,WAAP;AACD;;AAED,0BACE,gCAAC,oBAAD;AAAU,QAAA,KAAK,EAAE,KAAKN;AAAtB,sBACE,gCAAC,cAAD,EAAoBK,IAApB,CADF,CADF;AAKD;;;EAtCgBI,kBAAMC,S;;iCAAnBb,I,eACe;AACjBV,EAAAA,aAAa,EAAEwB,sBAAUC,IADR;AAEjB7B,EAAAA,KAAK,EAAE4B,sBAAUE;AAFA,C;eAwCNhB,I","sourcesContent":["import { connect } from 'react-redux';\nimport React from 'react';\nimport { Provider } from 'react-redux';\nimport { createStore } from 'redux';\nimport reducer from './reducer';\nimport { changeMarks } from './actions';\nimport PropTypes from 'prop-types';\nimport isEqual from 'lodash/isEqual';\nimport { ActionCreators } from 'redux-undo';\nimport GraphWithControls from '../graph-with-controls';\n\nconst mapStateToProps = (s) => ({\n marks: s.marks.present,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n onChangeMarks: (m) => dispatch(changeMarks(m)),\n onUndo: () => dispatch(ActionCreators.undo()),\n onRedo: () => dispatch(ActionCreators.redo()),\n onReset: () => dispatch(changeMarks([])),\n});\n\nexport const GraphContainer = connect(mapStateToProps, mapDispatchToProps)(GraphWithControls);\n\n/**\n * The graph component entry point with undo/redo\n * Redux is an implementation detail, hide it in the react component.\n */\nclass Root extends React.Component {\n static propTypes = {\n onChangeMarks: PropTypes.func,\n marks: PropTypes.array,\n };\n\n constructor(props) {\n super(props);\n\n const r = reducer();\n this.store = createStore(r, { marks: props.marks });\n\n this.store.subscribe(this.onStoreChange);\n }\n\n onStoreChange = () => {\n const { marks, onChangeMarks } = this.props;\n const storeState = this.store.getState();\n\n if (!isEqual(storeState.marks.present, marks)) {\n onChangeMarks(storeState.marks.present);\n }\n };\n\n render() {\n // eslint-disable-next-line no-unused-vars\n const { onChangeMarks, marks, ...rest } = this.props;\n const correctnessSet = marks && marks.find((m) => m.correctness);\n\n if (correctnessSet) {\n return <GraphWithControls {...rest} marks={marks} disabled={correctnessSet} />;\n }\n\n return (\n <Provider store={this.store}>\n <GraphContainer {...rest} />\n </Provider>\n );\n }\n}\n\nexport default Root;\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/container/index.jsx"],"names":["mapStateToProps","s","marks","present","mapDispatchToProps","dispatch","onChangeMarks","m","onUndo","ActionCreators","undo","onRedo","redo","onReset","GraphContainer","GraphWithControls","Root","props","storeState","store","getState","r","subscribe","onStoreChange","prevProps","rest","correctnessSet","find","correctness","React","Component","PropTypes","func","array"],"mappings":"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","sourcesContent":["import { connect } from 'react-redux';\nimport React from 'react';\nimport { Provider } from 'react-redux';\nimport { createStore } from 'redux';\nimport reducer from './reducer';\nimport { changeMarks } from './actions';\nimport PropTypes from 'prop-types';\nimport isEqual from 'lodash/isEqual';\nimport { ActionCreators } from 'redux-undo';\nimport GraphWithControls from '../graph-with-controls';\n\nconst mapStateToProps = (s) => ({\n marks: s.marks.present,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n onChangeMarks: (m) => dispatch(changeMarks(m)),\n onUndo: () => dispatch(ActionCreators.undo()),\n onRedo: () => dispatch(ActionCreators.redo()),\n onReset: () => dispatch(changeMarks([])),\n});\n\nexport const GraphContainer = connect(mapStateToProps, mapDispatchToProps)(GraphWithControls);\n\n/**\n * The graph component entry point with undo/redo\n * Redux is an implementation detail, hide it in the react component.\n */\nclass Root extends React.Component {\n static propTypes = {\n onChangeMarks: PropTypes.func,\n marks: PropTypes.array,\n };\n\n constructor(props) {\n super(props);\n\n const r = reducer();\n this.store = createStore(r, { marks: props.marks });\n\n this.store.subscribe(this.onStoreChange);\n }\n\n componentDidUpdate(prevProps) {\n const { marks } = this.props;\n\n if (!isEqual(prevProps.marks, marks)) {\n this.store.dispatch(changeMarks(marks));\n }\n }\n\n onStoreChange = () => {\n const { marks, onChangeMarks } = this.props;\n const storeState = this.store.getState();\n\n if (!isEqual(storeState.marks.present, marks)) {\n onChangeMarks(storeState.marks.present);\n }\n };\n\n render() {\n // eslint-disable-next-line no-unused-vars\n const { onChangeMarks, marks, ...rest } = this.props;\n const correctnessSet = marks && marks.find((m) => m.correctness);\n\n if (correctnessSet) {\n return <GraphWithControls {...rest} marks={marks} disabled={correctnessSet} />;\n }\n\n return (\n <Provider store={this.store}>\n <GraphContainer {...rest} />\n </Provider>\n );\n }\n}\n\nexport default Root;\n"],"file":"index.js"}
@@ -276,6 +276,7 @@ var RawBaseComponent = /*#__PURE__*/function (_React$Component) {
276
276
  correctness = _this$props5.correctness,
277
277
  disabled = _this$props5.disabled,
278
278
  graphProps = _this$props5.graphProps,
279
+ onChangeLabelProps = _this$props5.onChangeLabelProps,
279
280
  onDragStart = _this$props5.onDragStart,
280
281
  onDragStop = _this$props5.onDragStop,
281
282
  points = _this$props5.points,
@@ -301,7 +302,11 @@ var RawBaseComponent = /*#__PURE__*/function (_React$Component) {
301
302
  disabled: !labelModeEnabled,
302
303
  mark: middle,
303
304
  graphProps: graphProps,
304
- onChange: function onChange() {}
305
+ onChange: function onChange(label) {
306
+ return onChangeLabelProps(_objectSpread(_objectSpread({}, middle), {}, {
307
+ label: label
308
+ }));
309
+ }
305
310
  }), labelNode);
306
311
  }
307
312
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tools/polygon/component.jsx"],"names":["log","buildLines","points","closed","expanded","reduce","acc","p","index","push","isLast","length","next","all","map","from","to","swap","arr","rest","pairs","pr","e","replacement","Number","isFinite","splice","RawBaseComponent","props","onChange","update","overlapPoint","find","label","existing","forEach","point","onClosePolygon","onChangeProps","updatedPoint","data","onClick","isToolActive","labelModeEnabled","onChangeLabelProps","a","b","middle","input","focus","close","coordinatesOnHover","correctness","disabled","graphProps","onDragStart","onDragStop","labelNode","lines","common","polygonLabelIndex","polygonLabelNode","hasOwnProperty","ReactDOM","createPortal","r","dragPoly","bind","clickPoint","l","dragLine","x","y","dragPoint","labelChange","React","Component","classes","PropTypes","object","className","string","bool","arrayOf","types","PointType","func","isRequired","GraphPropsType","BaseComponent","mark","state","setState","onComplete","m","undefined","nextProps","nextState","nextGraphProps","utils","isDomainRangeEqual","stateMark","change","changeLabelProps","changeProps","closePolygon","dragStart","dragStop","ToolPropTypeFields"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { ToolPropTypeFields } from '../shared/types';\nimport { BasePoint } from '../shared/point';\nimport chunk from 'lodash/chunk';\nimport initial from 'lodash/initial';\nimport isEqual from 'lodash/isEqual';\nimport debug from 'debug';\nimport Line from './line';\nimport DraggablePolygon, { Polygon } from './polygon';\nimport { types, utils } from '@pie-lib/plot';\nimport invariant from 'invariant';\nimport ReactDOM from 'react-dom';\nimport MarkLabel from '../../mark-label';\nimport isEmpty from 'lodash/isEmpty';\nimport { getMiddleOfTwoPoints, getRightestPoints, equalPoints } from '../../utils';\n\nconst log = debug('pie-lib:graphing:polygon');\n\nexport const buildLines = (points, closed) => {\n const expanded = points.reduce((acc, p, index) => {\n acc.push({ ...p, index });\n const isLast = index === points.length - 1;\n const next = isLast ? 0 : index + 1;\n acc.push({ ...points[next], index: next });\n return acc;\n }, []);\n\n const all = chunk(expanded, 2).map(([from, to]) => {\n return { from, to };\n });\n\n return closed ? all : initial(all);\n};\n\nexport const swap = (arr, ...rest) => {\n const pairs = chunk(rest, 2);\n return pairs.reduce(\n (acc, pr) => {\n if (pr.length === 2) {\n let [e, replacement] = pr;\n invariant(Number.isFinite(e.index), 'Index must be defined');\n const index = e.index;\n // const i = acc.findIndex(pt => pt.x === e.x && pt.y === e.y);\n if (index >= 0) {\n acc.splice(index, 1, replacement);\n return acc;\n } else {\n return acc;\n }\n } else {\n return acc;\n }\n },\n [...arr],\n );\n};\n\nexport class RawBaseComponent extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n correctness: PropTypes.string,\n points: PropTypes.arrayOf(types.PointType),\n closed: PropTypes.bool,\n coordinatesOnHover: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n onClosePolygon: PropTypes.func.isRequired,\n onDragStart: PropTypes.func,\n onDragStop: PropTypes.func,\n onClick: PropTypes.func,\n graphProps: types.GraphPropsType.isRequired,\n isToolActive: PropTypes.bool,\n labelNode: PropTypes.object,\n labelModeEnabled: PropTypes.bool,\n onChangeLabelProps: PropTypes.func,\n onChangeProps: PropTypes.func,\n };\n\n static defaultProps = {\n points: [],\n };\n\n dragPoint = (index, from, to) => {\n log('[dragPoint] from, to:', from, to);\n const { onChange, points } = this.props;\n const update = [...points];\n const overlapPoint = !!(points || []).find((p) => equalPoints(p, to));\n\n if (equalPoints(from, to) || overlapPoint) {\n return;\n }\n\n if (points[index].label) {\n to.label = points[index].label;\n }\n\n update.splice(index, 1, to);\n onChange(update);\n };\n\n dragLine = (existing, next) => {\n log('[dragLine]: ', existing, next);\n const { onChange } = this.props;\n\n if (existing.from.label) {\n next.from.label = existing.from.label;\n }\n\n if (existing.to.label) {\n next.to.label = existing.to.label;\n }\n\n const points = swap(this.props.points, existing.from, next.from, existing.to, next.to);\n onChange(points);\n };\n\n dragPoly = (existing, next) => {\n log('[dragPoly] ', existing, next);\n const { onChange } = this.props;\n\n next.forEach((point, index) => {\n if (existing[index].label) {\n next[index].label = existing[index].label;\n }\n });\n\n onChange(next);\n };\n\n close = () => {\n const { points, onClosePolygon } = this.props;\n log('[close] ...');\n if (points.length >= 3) {\n onClosePolygon();\n } else {\n log('[close] - nope');\n }\n };\n\n labelChange = (point, index) => {\n const { points, onChangeProps } = this.props;\n const updatedPoint = { ...point };\n\n if (!point.label || isEmpty(point.label)) {\n delete updatedPoint.label;\n }\n\n const update = [...points];\n\n update.splice(index, 1, updatedPoint);\n onChangeProps(update);\n };\n\n clickPoint = (point, index, data) => {\n const { closed, onClick, isToolActive, labelModeEnabled, onChangeProps, onChangeLabelProps, points } = this.props;\n\n if (labelModeEnabled) {\n if (points && index === points.length) {\n const { a, b } = getRightestPoints(points);\n const middle = { label: '', ...point, ...getMiddleOfTwoPoints(a, b) };\n\n onChangeLabelProps(middle);\n } else {\n const update = [...points];\n\n update.splice(index, 1, { label: '', ...point });\n onChangeProps(update);\n }\n\n if (this.input[index]) {\n this.input[index].focus();\n }\n } else {\n if (isToolActive && !closed && index === 0) {\n this.close();\n } else {\n onClick(data);\n }\n }\n };\n\n // IMPORTANT, do not remove\n input = {};\n\n render() {\n const {\n closed,\n coordinatesOnHover,\n correctness,\n disabled,\n graphProps,\n onDragStart,\n onDragStop,\n points,\n middle,\n labelNode,\n labelModeEnabled,\n } = this.props;\n const lines = buildLines(points, closed);\n const common = { onDragStart, onDragStop, graphProps, disabled, correctness };\n const polygonLabelIndex = (points && points.length) || 0;\n let polygonLabelNode = null;\n\n if (labelNode && middle && middle.hasOwnProperty('label')) {\n polygonLabelNode = ReactDOM.createPortal(\n <MarkLabel\n inputRef={(r) => (this.input[polygonLabelIndex] = r)}\n disabled={!labelModeEnabled}\n mark={middle}\n graphProps={graphProps}\n onChange={() => {}}\n />,\n labelNode,\n );\n }\n\n return (\n <g>\n {closed ? (\n <React.Fragment>\n <DraggablePolygon\n points={points}\n onDrag={this.dragPoly.bind(this, points)}\n closed={closed}\n {...common}\n onClick={this.clickPoint.bind(this, middle, polygonLabelIndex)}\n />\n {polygonLabelNode}\n </React.Fragment>\n ) : (\n <Polygon points={points} graphProps={graphProps} closed={closed} />\n )}\n {(lines || []).map((l, index) => (\n <Line\n key={`line-${index}`}\n from={l.from}\n to={l.to}\n onDrag={this.dragLine.bind(this, l)}\n {...common}\n onClick={this.clickPoint.bind(this, middle, polygonLabelIndex)}\n />\n ))}\n\n {(points || []).map((p, index) => {\n return [\n <BasePoint\n key={`point-${index}`}\n coordinatesOnHover={coordinatesOnHover}\n labelNode={labelNode}\n x={p.x}\n y={p.y}\n onDrag={this.dragPoint.bind(this, index, p)}\n onClick={this.clickPoint.bind(this, p, index)}\n {...common}\n />,\n labelNode && p.hasOwnProperty('label')\n ? ReactDOM.createPortal(\n <MarkLabel\n inputRef={(r) => (this.input[index] = r)}\n disabled={!labelModeEnabled}\n mark={p}\n graphProps={graphProps}\n onChange={(label) => this.labelChange({ ...p, label }, index)}\n />,\n labelNode,\n )\n : null,\n ];\n })}\n </g>\n );\n }\n}\n\nexport const BaseComponent = withStyles(() => ({}))(RawBaseComponent);\n\nexport default class Component extends React.Component {\n static propTypes = {\n ...ToolPropTypeFields,\n graphProps: types.GraphPropsType.isRequired,\n };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n change = (points) => {\n const {\n mark: { middle },\n } = this.props;\n const mark = { ...this.state.mark, points };\n\n if (middle) {\n const { a, b } = getRightestPoints(points);\n mark.middle = { ...middle, ...getMiddleOfTwoPoints(a, b) };\n }\n\n this.setState({ mark });\n };\n\n changeProps = (points) => {\n const mark = { ...this.props.mark, points };\n\n this.props.onChange(this.props.mark, mark);\n };\n\n changeLabelProps = (point) => {\n const { mark, onChange } = this.props;\n const middle = { ...mark.middle, ...point };\n\n onChange(mark, { ...mark, middle });\n };\n\n closePolygon = () => {\n log('[closePolygon] ...');\n const { onComplete, mark } = this.props;\n const update = { ...mark, closed: true };\n\n onComplete(mark, update);\n };\n\n dragStart = () => this.setState({ mark: this.props.mark });\n\n dragStop = () => {\n const { onChange } = this.props;\n const m = { ...this.state.mark };\n this.setState({ mark: undefined }, () => {\n onChange(this.props.mark, m);\n });\n };\n\n shouldComponentUpdate = (nextProps, nextState) => {\n const { coordinatesOnHover, graphProps, mark } = this.props;\n const { graphProps: nextGraphProps } = nextProps;\n\n return (\n !utils.isDomainRangeEqual(graphProps, nextGraphProps) ||\n !isEqual(mark, nextProps.mark) ||\n !isEqual(this.state.mark, nextState.mark) ||\n coordinatesOnHover !== nextProps.coordinatesOnHover\n );\n };\n\n render() {\n const { coordinatesOnHover, mark, graphProps, onClick, isToolActive, labelNode, labelModeEnabled } = this.props;\n const { mark: stateMark } = this.state;\n\n return (\n <BaseComponent\n {...(stateMark || mark)}\n coordinatesOnHover={coordinatesOnHover}\n onChange={this.change}\n onChangeLabelProps={this.changeLabelProps}\n onChangeProps={this.changeProps}\n onClosePolygon={this.closePolygon}\n onDragStart={this.dragStart}\n onDragStop={this.dragStop}\n onClick={onClick}\n graphProps={graphProps}\n isToolActive={isToolActive}\n labelNode={labelNode}\n labelModeEnabled={labelModeEnabled}\n />\n );\n }\n}\n"],"file":"component.js"}
1
+ {"version":3,"sources":["../../../src/tools/polygon/component.jsx"],"names":["log","buildLines","points","closed","expanded","reduce","acc","p","index","push","isLast","length","next","all","map","from","to","swap","arr","rest","pairs","pr","e","replacement","Number","isFinite","splice","RawBaseComponent","props","onChange","update","overlapPoint","find","label","existing","forEach","point","onClosePolygon","onChangeProps","updatedPoint","data","onClick","isToolActive","labelModeEnabled","onChangeLabelProps","a","b","middle","input","focus","close","coordinatesOnHover","correctness","disabled","graphProps","onDragStart","onDragStop","labelNode","lines","common","polygonLabelIndex","polygonLabelNode","hasOwnProperty","ReactDOM","createPortal","r","dragPoly","bind","clickPoint","l","dragLine","x","y","dragPoint","labelChange","React","Component","classes","PropTypes","object","className","string","bool","arrayOf","types","PointType","func","isRequired","GraphPropsType","BaseComponent","mark","state","setState","onComplete","m","undefined","nextProps","nextState","nextGraphProps","utils","isDomainRangeEqual","stateMark","change","changeLabelProps","changeProps","closePolygon","dragStart","dragStop","ToolPropTypeFields"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { ToolPropTypeFields } from '../shared/types';\nimport { BasePoint } from '../shared/point';\nimport chunk from 'lodash/chunk';\nimport initial from 'lodash/initial';\nimport isEqual from 'lodash/isEqual';\nimport debug from 'debug';\nimport Line from './line';\nimport DraggablePolygon, { Polygon } from './polygon';\nimport { types, utils } from '@pie-lib/plot';\nimport invariant from 'invariant';\nimport ReactDOM from 'react-dom';\nimport MarkLabel from '../../mark-label';\nimport isEmpty from 'lodash/isEmpty';\nimport { getMiddleOfTwoPoints, getRightestPoints, equalPoints } from '../../utils';\n\nconst log = debug('pie-lib:graphing:polygon');\n\nexport const buildLines = (points, closed) => {\n const expanded = points.reduce((acc, p, index) => {\n acc.push({ ...p, index });\n\n const isLast = index === points.length - 1;\n const next = isLast ? 0 : index + 1;\n\n acc.push({ ...points[next], index: next });\n\n return acc;\n }, []);\n\n const all = chunk(expanded, 2).map(([from, to]) => {\n return { from, to };\n });\n\n return closed ? all : initial(all);\n};\n\nexport const swap = (arr, ...rest) => {\n const pairs = chunk(rest, 2);\n\n return pairs.reduce(\n (acc, pr) => {\n if (pr.length === 2) {\n let [e, replacement] = pr;\n\n invariant(Number.isFinite(e.index), 'Index must be defined');\n\n const index = e.index;\n // const i = acc.findIndex(pt => pt.x === e.x && pt.y === e.y);\n\n if (index >= 0) {\n acc.splice(index, 1, replacement);\n\n return acc;\n } else {\n return acc;\n }\n } else {\n return acc;\n }\n },\n [...arr],\n );\n};\n\nexport class RawBaseComponent extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n correctness: PropTypes.string,\n points: PropTypes.arrayOf(types.PointType),\n closed: PropTypes.bool,\n coordinatesOnHover: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n onClosePolygon: PropTypes.func.isRequired,\n onDragStart: PropTypes.func,\n onDragStop: PropTypes.func,\n onClick: PropTypes.func,\n graphProps: types.GraphPropsType.isRequired,\n isToolActive: PropTypes.bool,\n labelNode: PropTypes.object,\n labelModeEnabled: PropTypes.bool,\n onChangeLabelProps: PropTypes.func,\n onChangeProps: PropTypes.func,\n };\n\n static defaultProps = {\n points: [],\n };\n\n dragPoint = (index, from, to) => {\n log('[dragPoint] from, to:', from, to);\n const { onChange, points } = this.props;\n const update = [...points];\n const overlapPoint = !!(points || []).find((p) => equalPoints(p, to));\n\n if (equalPoints(from, to) || overlapPoint) {\n return;\n }\n\n if (points[index].label) {\n to.label = points[index].label;\n }\n\n update.splice(index, 1, to);\n onChange(update);\n };\n\n dragLine = (existing, next) => {\n log('[dragLine]: ', existing, next);\n const { onChange } = this.props;\n\n if (existing.from.label) {\n next.from.label = existing.from.label;\n }\n\n if (existing.to.label) {\n next.to.label = existing.to.label;\n }\n\n const points = swap(this.props.points, existing.from, next.from, existing.to, next.to);\n onChange(points);\n };\n\n dragPoly = (existing, next) => {\n log('[dragPoly] ', existing, next);\n const { onChange } = this.props;\n\n next.forEach((point, index) => {\n if (existing[index].label) {\n next[index].label = existing[index].label;\n }\n });\n\n onChange(next);\n };\n\n close = () => {\n const { points, onClosePolygon } = this.props;\n log('[close] ...');\n\n if (points.length >= 3) {\n onClosePolygon();\n } else {\n log('[close] - nope');\n }\n };\n\n labelChange = (point, index) => {\n const { points, onChangeProps } = this.props;\n const updatedPoint = { ...point };\n\n if (!point.label || isEmpty(point.label)) {\n delete updatedPoint.label;\n }\n\n const update = [...points];\n\n update.splice(index, 1, updatedPoint);\n onChangeProps(update);\n };\n\n clickPoint = (point, index, data) => {\n const { closed, onClick, isToolActive, labelModeEnabled, onChangeProps, onChangeLabelProps, points } = this.props;\n\n if (labelModeEnabled) {\n if (points && index === points.length) {\n const { a, b } = getRightestPoints(points);\n const middle = { label: '', ...point, ...getMiddleOfTwoPoints(a, b) };\n\n onChangeLabelProps(middle);\n } else {\n const update = [...points];\n\n update.splice(index, 1, { label: '', ...point });\n onChangeProps(update);\n }\n\n if (this.input[index]) {\n this.input[index].focus();\n }\n } else {\n if (isToolActive && !closed && index === 0) {\n this.close();\n } else {\n onClick(data);\n }\n }\n };\n\n // IMPORTANT, do not remove\n input = {};\n\n render() {\n const {\n closed,\n coordinatesOnHover,\n correctness,\n disabled,\n graphProps,\n onChangeLabelProps,\n onDragStart,\n onDragStop,\n points,\n middle,\n labelNode,\n labelModeEnabled,\n } = this.props;\n const lines = buildLines(points, closed);\n const common = { onDragStart, onDragStop, graphProps, disabled, correctness };\n const polygonLabelIndex = (points && points.length) || 0;\n let polygonLabelNode = null;\n\n if (labelNode && middle && middle.hasOwnProperty('label')) {\n polygonLabelNode = ReactDOM.createPortal(\n <MarkLabel\n inputRef={(r) => (this.input[polygonLabelIndex] = r)}\n disabled={!labelModeEnabled}\n mark={middle}\n graphProps={graphProps}\n onChange={(label) => onChangeLabelProps({ ...middle, label })}\n />,\n labelNode,\n );\n }\n\n return (\n <g>\n {closed ? (\n <React.Fragment>\n <DraggablePolygon\n points={points}\n onDrag={this.dragPoly.bind(this, points)}\n closed={closed}\n {...common}\n onClick={this.clickPoint.bind(this, middle, polygonLabelIndex)}\n />\n {polygonLabelNode}\n </React.Fragment>\n ) : (\n <Polygon points={points} graphProps={graphProps} closed={closed} />\n )}\n {(lines || []).map((l, index) => (\n <Line\n key={`line-${index}`}\n from={l.from}\n to={l.to}\n onDrag={this.dragLine.bind(this, l)}\n {...common}\n onClick={this.clickPoint.bind(this, middle, polygonLabelIndex)}\n />\n ))}\n\n {(points || []).map((p, index) => {\n return [\n <BasePoint\n key={`point-${index}`}\n coordinatesOnHover={coordinatesOnHover}\n labelNode={labelNode}\n x={p.x}\n y={p.y}\n onDrag={this.dragPoint.bind(this, index, p)}\n onClick={this.clickPoint.bind(this, p, index)}\n {...common}\n />,\n labelNode && p.hasOwnProperty('label')\n ? ReactDOM.createPortal(\n <MarkLabel\n inputRef={(r) => (this.input[index] = r)}\n disabled={!labelModeEnabled}\n mark={p}\n graphProps={graphProps}\n onChange={(label) => this.labelChange({ ...p, label }, index)}\n />,\n labelNode,\n )\n : null,\n ];\n })}\n </g>\n );\n }\n}\n\nexport const BaseComponent = withStyles(() => ({}))(RawBaseComponent);\n\nexport default class Component extends React.Component {\n static propTypes = {\n ...ToolPropTypeFields,\n graphProps: types.GraphPropsType.isRequired,\n };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n change = (points) => {\n const {\n mark: { middle },\n } = this.props;\n const mark = { ...this.state.mark, points };\n\n if (middle) {\n const { a, b } = getRightestPoints(points);\n\n mark.middle = { ...middle, ...getMiddleOfTwoPoints(a, b) };\n }\n\n this.setState({ mark });\n };\n\n changeProps = (points) => {\n const mark = { ...this.props.mark, points };\n\n this.props.onChange(this.props.mark, mark);\n };\n\n changeLabelProps = (point) => {\n const { mark, onChange } = this.props;\n const middle = { ...mark.middle, ...point };\n\n onChange(mark, { ...mark, middle });\n };\n\n closePolygon = () => {\n log('[closePolygon] ...');\n const { onComplete, mark } = this.props;\n const update = { ...mark, closed: true };\n\n onComplete(mark, update);\n };\n\n dragStart = () => this.setState({ mark: this.props.mark });\n\n dragStop = () => {\n const { onChange } = this.props;\n const m = { ...this.state.mark };\n\n this.setState({ mark: undefined }, () => {\n onChange(this.props.mark, m);\n });\n };\n\n shouldComponentUpdate = (nextProps, nextState) => {\n const { coordinatesOnHover, graphProps, mark } = this.props;\n const { graphProps: nextGraphProps } = nextProps;\n\n return (\n !utils.isDomainRangeEqual(graphProps, nextGraphProps) ||\n !isEqual(mark, nextProps.mark) ||\n !isEqual(this.state.mark, nextState.mark) ||\n coordinatesOnHover !== nextProps.coordinatesOnHover\n );\n };\n\n render() {\n const { coordinatesOnHover, mark, graphProps, onClick, isToolActive, labelNode, labelModeEnabled } = this.props;\n const { mark: stateMark } = this.state;\n\n return (\n <BaseComponent\n {...(stateMark || mark)}\n coordinatesOnHover={coordinatesOnHover}\n onChange={this.change}\n onChangeLabelProps={this.changeLabelProps}\n onChangeProps={this.changeProps}\n onClosePolygon={this.closePolygon}\n onDragStart={this.dragStart}\n onDragStop={this.dragStop}\n onClick={onClick}\n graphProps={graphProps}\n isToolActive={isToolActive}\n labelNode={labelNode}\n labelModeEnabled={labelModeEnabled}\n />\n );\n }\n}\n"],"file":"component.js"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "2.11.6",
6
+ "version": "2.11.7",
7
7
  "description": "Graphing components",
8
8
  "keywords": [
9
9
  "react",
@@ -18,7 +18,7 @@
18
18
  "dependencies": {
19
19
  "@mapbox/point-geometry": "^0.1.0",
20
20
  "@material-ui/core": "^3.8.3",
21
- "@pie-lib/drag": "^2.0.3",
21
+ "@pie-lib/drag": "^2.0.4",
22
22
  "@pie-lib/graphing-utils": "^1.1.21",
23
23
  "@pie-lib/plot": "^2.5.3",
24
24
  "@pie-lib/render-ui": "^4.13.7",
@@ -44,6 +44,6 @@
44
44
  "peerDependencies": {
45
45
  "react": "^16.8.1"
46
46
  },
47
- "gitHead": "b841a72572f13280f45541fbd4a05d6ddc115737",
47
+ "gitHead": "b26d56c7bb2ddddd23b4c018ac81c418afed443e",
48
48
  "scripts": {}
49
49
  }
package/src/bg.jsx CHANGED
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { select, mouse } from 'd3-selection';
4
4
  import { types, utils } from '@pie-lib/plot';
5
- import { getTickValues } from './utils';
5
+ import { getTickValues, thinnerShapesNeeded } from './utils';
6
6
 
7
7
  export default class Bg extends React.Component {
8
8
  static propTypes = {
@@ -16,6 +16,7 @@ export default class Bg extends React.Component {
16
16
 
17
17
  componentDidMount() {
18
18
  const rect = select(this.rect);
19
+
19
20
  rect.on('click', this.onRectClick.bind(this, rect));
20
21
  }
21
22
 
@@ -45,6 +46,7 @@ export default class Bg extends React.Component {
45
46
  ticks.reduce((prev, curr) => {
46
47
  const currentDistance = Math.abs(curr - value);
47
48
  const previousDistance = Math.abs(prev - value);
49
+
48
50
  return currentDistance <= previousDistance ? curr : prev;
49
51
  })
50
52
  );
@@ -64,7 +66,18 @@ export default class Bg extends React.Component {
64
66
  };
65
67
 
66
68
  render() {
67
- const { width, height } = this.props;
68
- return <rect ref={(rect) => (this.rect = rect)} fill="red" fillOpacity="0.0" width={width} height={height} />;
69
+ const { width, height, graphProps } = this.props;
70
+ const padding = thinnerShapesNeeded(graphProps) ? 6 : 10;
71
+
72
+ return (
73
+ <rect
74
+ ref={(rect) => (this.rect = rect)}
75
+ transform={`translate(-${padding}, -${padding})`}
76
+ fill="red"
77
+ fillOpacity="0.0"
78
+ width={width + padding * 2}
79
+ height={height + padding * 2}
80
+ />
81
+ );
69
82
  }
70
83
  }
@@ -41,6 +41,14 @@ class Root extends React.Component {
41
41
  this.store.subscribe(this.onStoreChange);
42
42
  }
43
43
 
44
+ componentDidUpdate(prevProps) {
45
+ const { marks } = this.props;
46
+
47
+ if (!isEqual(prevProps.marks, marks)) {
48
+ this.store.dispatch(changeMarks(marks));
49
+ }
50
+ }
51
+
44
52
  onStoreChange = () => {
45
53
  const { marks, onChangeMarks } = this.props;
46
54
  const storeState = this.store.getState();
@@ -21,9 +21,12 @@ const log = debug('pie-lib:graphing:polygon');
21
21
  export const buildLines = (points, closed) => {
22
22
  const expanded = points.reduce((acc, p, index) => {
23
23
  acc.push({ ...p, index });
24
+
24
25
  const isLast = index === points.length - 1;
25
26
  const next = isLast ? 0 : index + 1;
27
+
26
28
  acc.push({ ...points[next], index: next });
29
+
27
30
  return acc;
28
31
  }, []);
29
32
 
@@ -36,15 +39,20 @@ export const buildLines = (points, closed) => {
36
39
 
37
40
  export const swap = (arr, ...rest) => {
38
41
  const pairs = chunk(rest, 2);
42
+
39
43
  return pairs.reduce(
40
44
  (acc, pr) => {
41
45
  if (pr.length === 2) {
42
46
  let [e, replacement] = pr;
47
+
43
48
  invariant(Number.isFinite(e.index), 'Index must be defined');
49
+
44
50
  const index = e.index;
45
51
  // const i = acc.findIndex(pt => pt.x === e.x && pt.y === e.y);
52
+
46
53
  if (index >= 0) {
47
54
  acc.splice(index, 1, replacement);
55
+
48
56
  return acc;
49
57
  } else {
50
58
  return acc;
@@ -133,6 +141,7 @@ export class RawBaseComponent extends React.Component {
133
141
  close = () => {
134
142
  const { points, onClosePolygon } = this.props;
135
143
  log('[close] ...');
144
+
136
145
  if (points.length >= 3) {
137
146
  onClosePolygon();
138
147
  } else {
@@ -192,6 +201,7 @@ export class RawBaseComponent extends React.Component {
192
201
  correctness,
193
202
  disabled,
194
203
  graphProps,
204
+ onChangeLabelProps,
195
205
  onDragStart,
196
206
  onDragStop,
197
207
  points,
@@ -211,7 +221,7 @@ export class RawBaseComponent extends React.Component {
211
221
  disabled={!labelModeEnabled}
212
222
  mark={middle}
213
223
  graphProps={graphProps}
214
- onChange={() => {}}
224
+ onChange={(label) => onChangeLabelProps({ ...middle, label })}
215
225
  />,
216
226
  labelNode,
217
227
  );
@@ -298,6 +308,7 @@ export default class Component extends React.Component {
298
308
 
299
309
  if (middle) {
300
310
  const { a, b } = getRightestPoints(points);
311
+
301
312
  mark.middle = { ...middle, ...getMiddleOfTwoPoints(a, b) };
302
313
  }
303
314
 
@@ -330,6 +341,7 @@ export default class Component extends React.Component {
330
341
  dragStop = () => {
331
342
  const { onChange } = this.props;
332
343
  const m = { ...this.state.mark };
344
+
333
345
  this.setState({ mark: undefined }, () => {
334
346
  onChange(this.props.mark, m);
335
347
  });