@pie-lib/graphing 2.12.18 → 2.12.19-next.2
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/lib/graph.js +6 -1
- package/lib/graph.js.map +1 -1
- package/package.json +2 -2
- package/src/graph.jsx +5 -1
package/lib/graph.js
CHANGED
|
@@ -220,11 +220,16 @@ var Graph = /*#__PURE__*/function (_React$Component) {
|
|
|
220
220
|
|
|
221
221
|
_this.updateMarks(buildingMark, updatedMark, true);
|
|
222
222
|
});
|
|
223
|
-
_this.maskUid =
|
|
223
|
+
_this.maskUid = _this.generateMaskId();
|
|
224
224
|
return _this;
|
|
225
225
|
}
|
|
226
226
|
|
|
227
227
|
(0, _createClass2["default"])(Graph, [{
|
|
228
|
+
key: "generateMaskId",
|
|
229
|
+
value: function generateMaskId() {
|
|
230
|
+
return 'graph-' + (Math.random() * 10000).toFixed();
|
|
231
|
+
}
|
|
232
|
+
}, {
|
|
228
233
|
key: "render",
|
|
229
234
|
value: function render() {
|
|
230
235
|
var _this2 = this;
|
package/lib/graph.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/graph.jsx"],"names":["log","graphPropTypes","axesSettings","PropTypes","shape","AxisPropTypes","backgroundMarks","array","className","string","collapsibleToolbar","bool","collapsibleToolbarTitle","disabledLabels","disabledTitle","domain","types","DomainType","labels","LabelType","labelModeEnabled","coordinatesOnHover","marks","onChangeLabels","func","onChangeMarks","onChangeTitle","range","size","width","number","isRequired","height","showLabels","showPixelGuides","showTitle","title","tools","getMaskSize","x","y","removeBuildingToolIfCurrentToolDiffers","currentTool","buildingMark","filter","m","building","newMarks","type","index","findIndex","splice","Graph","props","setState","labelNode","oldMark","newMark","markData","updatedMark","complete","updateMarks","existing","update","addIfMissing","mark","tool","find","t","Component","point","addPoint","undefined","maskUid","maskId","Math","random","toFixed","labelsPlaceholders","titlePlaceholder","graphProps","rootNode","maskSize","common","r","padding","onBgClick","map","getComponent","markType","disabled","isBackground","state","changeMark","completeMark","startDrag","stopDrag","pointerEvents","React","object"],"mappings":"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","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 { 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 disabledLabels: PropTypes.bool,\n disabledTitle: PropTypes.bool,\n domain: types.DomainType,\n labels: PropTypes.shape(LabelType),\n labelModeEnabled: PropTypes.bool,\n coordinatesOnHover: PropTypes.bool,\n marks: PropTypes.array,\n onChangeLabels: PropTypes.func,\n onChangeMarks: PropTypes.func,\n onChangeTitle: PropTypes.func,\n range: types.DomainType,\n size: PropTypes.shape({\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n }),\n showLabels: PropTypes.bool,\n showPixelGuides: PropTypes.bool,\n showTitle: PropTypes.bool,\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 constructor(props) {\n super(props);\n this.maskUid = props.maskId || 'graph-' + (Math.random() * 10000).toFixed();\n }\n\n static propTypes = {\n ...graphPropTypes,\n currentTool: PropTypes.object,\n };\n\n static defaultProps = {\n onChangeMarks: () => {},\n disabledLabels: false,\n disabledTitle: false,\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 disabledLabels,\n disabledTitle,\n domain,\n backgroundMarks,\n range,\n title,\n labels,\n labelModeEnabled,\n labelsPlaceholders,\n showLabels,\n showPixelGuides,\n showTitle,\n titlePlaceholder,\n onChangeLabels,\n onChangeTitle,\n } = this.props;\n let { marks } = this.props;\n\n const graphProps = createGraphProps(domain, range, size, () => this.rootNode);\n\n const maskSize = getMaskSize(size);\n const common = { graphProps, labelModeEnabled };\n\n marks = removeBuildingToolIfCurrentToolDiffers({ marks: marks || [], currentTool });\n\n return (\n <Root\n rootRef={(r) => (this.rootNode = r)}\n disabledTitle={disabledTitle}\n disabledLabels={disabledLabels}\n labels={labels}\n labelsPlaceholders={labelsPlaceholders || {}}\n showPixelGuides={showPixelGuides}\n showLabels={showLabels}\n showTitle={showTitle}\n title={title}\n titlePlaceholder={titlePlaceholder}\n onChangeTitle={onChangeTitle}\n onChangeLabels={onChangeLabels}\n {...common}\n >\n <g\n transform={\n domain && domain.padding && domain.range ? `translate(${domain.padding}, ${range.padding})` : undefined\n }\n >\n <Grid {...common} />\n <Axes {...axesSettings} {...common} />\n <Bg {...size} onClick={this.onBgClick} {...common} />\n <mask id={`${this.maskUid}`}>\n <rect {...maskSize} fill=\"white\" /> {/* TODO hardcoded color */}\n </mask>\n\n <g id=\"marks\" mask={`url('#${this.maskUid}')`}>\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 <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"],"file":"graph.js"}
|
|
1
|
+
{"version":3,"sources":["../src/graph.jsx"],"names":["log","graphPropTypes","axesSettings","PropTypes","shape","AxisPropTypes","backgroundMarks","array","className","string","collapsibleToolbar","bool","collapsibleToolbarTitle","disabledLabels","disabledTitle","domain","types","DomainType","labels","LabelType","labelModeEnabled","coordinatesOnHover","marks","onChangeLabels","func","onChangeMarks","onChangeTitle","range","size","width","number","isRequired","height","showLabels","showPixelGuides","showTitle","title","tools","getMaskSize","x","y","removeBuildingToolIfCurrentToolDiffers","currentTool","buildingMark","filter","m","building","newMarks","type","index","findIndex","splice","Graph","props","setState","labelNode","oldMark","newMark","markData","updatedMark","complete","updateMarks","existing","update","addIfMissing","mark","tool","find","t","Component","point","addPoint","undefined","maskUid","generateMaskId","Math","random","toFixed","labelsPlaceholders","titlePlaceholder","graphProps","rootNode","maskSize","common","r","padding","onBgClick","map","getComponent","markType","disabled","isBackground","state","changeMark","completeMark","startDrag","stopDrag","pointerEvents","React","object"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,wBAAN,CAAZ;AAEO,IAAMC,cAAc,GAAG;AAC5BC,EAAAA,YAAY,EAAEC,sBAAUC,KAAV,CAAgBC,mBAAhB,CADc;AAE5BC,EAAAA,eAAe,EAAEH,sBAAUI,KAFC;AAG5BC,EAAAA,SAAS,EAAEL,sBAAUM,MAHO;AAI5BC,EAAAA,kBAAkB,EAAEP,sBAAUQ,IAJF;AAK5BC,EAAAA,uBAAuB,EAAET,sBAAUM,MALP;AAM5BI,EAAAA,cAAc,EAAEV,sBAAUQ,IANE;AAO5BG,EAAAA,aAAa,EAAEX,sBAAUQ,IAPG;AAQ5BI,EAAAA,MAAM,EAAEC,YAAMC,UARc;AAS5BC,EAAAA,MAAM,EAAEf,sBAAUC,KAAV,CAAgBe,iBAAhB,CAToB;AAU5BC,EAAAA,gBAAgB,EAAEjB,sBAAUQ,IAVA;AAW5BU,EAAAA,kBAAkB,EAAElB,sBAAUQ,IAXF;AAY5BW,EAAAA,KAAK,EAAEnB,sBAAUI,KAZW;AAa5BgB,EAAAA,cAAc,EAAEpB,sBAAUqB,IAbE;AAc5BC,EAAAA,aAAa,EAAEtB,sBAAUqB,IAdG;AAe5BE,EAAAA,aAAa,EAAEvB,sBAAUqB,IAfG;AAgB5BG,EAAAA,KAAK,EAAEX,YAAMC,UAhBe;AAiB5BW,EAAAA,IAAI,EAAEzB,sBAAUC,KAAV,CAAgB;AACpByB,IAAAA,KAAK,EAAE1B,sBAAU2B,MAAV,CAAiBC,UADJ;AAEpBC,IAAAA,MAAM,EAAE7B,sBAAU2B,MAAV,CAAiBC;AAFL,GAAhB,CAjBsB;AAqB5BE,EAAAA,UAAU,EAAE9B,sBAAUQ,IArBM;AAsB5BuB,EAAAA,eAAe,EAAE/B,sBAAUQ,IAtBC;AAuB5BwB,EAAAA,SAAS,EAAEhC,sBAAUQ,IAvBO;AAwB5ByB,EAAAA,KAAK,EAAEjC,sBAAUM,MAxBW;AAyB5B4B,EAAAA,KAAK,EAAElC,sBAAUI;AAzBW,CAAvB;;;AA4BP,IAAM+B,WAAW,GAAG,SAAdA,WAAc,CAACV,IAAD;AAAA,SAAW;AAC7BW,IAAAA,CAAC,EAAE,CAAC,EADyB;AAE7BC,IAAAA,CAAC,EAAE,CAAC,EAFyB;AAG7BX,IAAAA,KAAK,EAAED,IAAI,CAACC,KAAL,GAAa,EAHS;AAI7BG,IAAAA,MAAM,EAAEJ,IAAI,CAACI,MAAL,GAAc;AAJO,GAAX;AAAA,CAApB;;AAOO,IAAMS,sCAAsC,GAAG,SAAzCA,sCAAyC,OAA4B;AAAA,MAAzBnB,KAAyB,QAAzBA,KAAyB;AAAA,MAAlBoB,WAAkB,QAAlBA,WAAkB;AAChF,MAAMC,YAAY,GAAGrB,KAAK,CAACsB,MAAN,CAAa,UAACC,CAAD;AAAA,WAAOA,CAAC,CAACC,QAAT;AAAA,GAAb,EAAgC,CAAhC,CAArB;AACA,MAAIC,QAAQ,GAAG,2BAAUzB,KAAV,CAAf;;AAEA,MAAIqB,YAAY,IAAID,WAAhB,IAA+BC,YAAY,CAACK,IAAb,KAAsBN,WAAW,CAACM,IAArE,EAA2E;AACzE,QAAMC,KAAK,GAAGF,QAAQ,CAACG,SAAT,CAAmB,UAACL,CAAD;AAAA,aAAO,yBAAQA,CAAR,EAAWF,YAAX,CAAP;AAAA,KAAnB,CAAd;;AAEA,QAAIM,KAAK,IAAI,CAAb,EAAgB;AACdF,MAAAA,QAAQ,CAACI,MAAT,CAAgBF,KAAhB,EAAuB,CAAvB;AACD;AACF;;AAED,SAAOF,QAAP;AACD,CAbM;;;;IAeMK,K;;;;;AACX,iBAAYC,KAAZ,EAAmB;AAAA;;AAAA;AACjB,8BAAMA,KAAN;AADiB,8FAgBX,EAhBW;AAAA,0GAsBC;AAAA,aAAM,MAAKC,QAAL,CAAc;AAAEC,QAAAA,SAAS,EAAE,MAAKA;AAAlB,OAAd,CAAN;AAAA,KAtBD;AAAA,mGAwBN,UAACC,OAAD,EAAUC,OAAV,EAAsB;AACjC,wBAAiC,MAAKJ,KAAtC;AAAA,UAAQ5B,aAAR,eAAQA,aAAR;AAAA,UAAuBH,KAAvB,eAAuBA,KAAvB;AACA,UAAIyB,QAAQ,GAAG,2BAAUzB,KAAV,CAAf;AAEA,UAAM2B,KAAK,GAAGF,QAAQ,CAACG,SAAT,CAAmB,UAACL,CAAD;AAAA,eAAO,yBAAQA,CAAR,EAAWW,OAAX,CAAP;AAAA,OAAnB,CAAd;;AAEA,UAAIP,KAAK,IAAI,CAAT,IAAc,CAAC,6BAAiBQ,OAAjB,EAA0BnC,KAA1B,EAAiCkC,OAAjC,CAAnB,EAA8D;AAC5DT,QAAAA,QAAQ,CAACI,MAAT,CAAgBF,KAAhB,EAAuB,CAAvB,EAA0BQ,OAA1B;AAEAhC,QAAAA,aAAa,CAACsB,QAAD,CAAb;AACD;AACF,KAnCkB;AAAA,qGAqCJ,UAACW,QAAD,EAAc;AAC3B,yBAA+B,MAAKL,KAApC;AAAA,UAAQX,WAAR,gBAAQA,WAAR;AAAA,UAAqBpB,KAArB,gBAAqBA,KAArB;AACA,UAAMqB,YAAY,GAAGrB,KAAK,CAACsB,MAAN,CAAa,UAACC,CAAD;AAAA,eAAOA,CAAC,CAACC,QAAT;AAAA,OAAb,EAAgC,CAAhC,CAArB;AAEA,UAAI,CAACH,YAAD,IAAiB,CAACD,WAAtB,EAAmC;AAEnC,UAAMiB,WAAW,GAAGjB,WAAW,CAACkB,QAAZ,CAAqBjB,YAArB,EAAmCe,QAAnC,CAApB;;AAEA,YAAKG,WAAL,CAAiBlB,YAAjB,EAA+BgB,WAA/B;AACD,KA9CkB;AAAA,oGAgDL,UAACG,QAAD,EAAWC,MAAX,EAA4C;AAAA,UAAzBC,YAAyB,uEAAV,KAAU;AACxD,yBAAiC,MAAKX,KAAtC;AAAA,UAAQ5B,aAAR,gBAAQA,aAAR;AAAA,UAAuBH,KAAvB,gBAAuBA,KAAvB;AACA,UAAIyB,QAAQ,GAAG,2BAAUzB,KAAV,CAAf;;AAEA,UAAI,CAACyC,MAAM,CAACjB,QAAR,IAAoB,6BAAiBiB,MAAjB,EAAyBzC,KAAzB,CAAxB,EAAyD;AACvD;AACD;;AAED,UAAM2B,KAAK,GAAGF,QAAQ,CAACG,SAAT,CAAmB,UAACL,CAAD;AAAA,eAAO,yBAAQA,CAAR,EAAWiB,QAAX,CAAP;AAAA,OAAnB,CAAd;;AAEA,UAAIb,KAAK,IAAI,CAAb,EAAgB;AACdF,QAAAA,QAAQ,CAACI,MAAT,CAAgBF,KAAhB,EAAuB,CAAvB,EAA0Bc,MAA1B;AAEAtC,QAAAA,aAAa,CAACsB,QAAD,CAAb;AACD,OAJD,MAIO,IAAIiB,YAAJ,EAAkB;AACvBvC,QAAAA,aAAa,+CAAKsB,QAAL,IAAegB,MAAf,GAAb;AACD;AACF,KAjEkB;AAAA,qGAmEJ,UAACE,IAAD,EAAU;AACvB,UAAI,CAACA,IAAL,EAAW,OAAO,IAAP;AAEX,UAAMC,IAAI,GAAG,CAAC,MAAKb,KAAL,CAAWhB,KAAX,IAAoB,EAArB,EAAyB8B,IAAzB,CAA8B,UAACC,CAAD;AAAA,eAAOA,CAAC,CAACpB,IAAF,KAAWiB,IAAI,CAACjB,IAAvB;AAAA,OAA9B,CAAb;AAEA,aAAQkB,IAAI,IAAIA,IAAI,CAACG,SAAd,IAA4B,IAAnC;AACD,KAzEkB;AAAA,kGA2EP,UAACC,KAAD,EAAW;AACrB,UAAQ/B,CAAR,GAAiB+B,KAAjB,CAAQ/B,CAAR;AAAA,UAAWC,CAAX,GAAiB8B,KAAjB,CAAW9B,CAAX;AACA,yBAAiD,MAAKa,KAAtD;AAAA,UAAQjC,gBAAR,gBAAQA,gBAAR;AAAA,UAA0BsB,WAA1B,gBAA0BA,WAA1B;AAAA,UAAuCpB,KAAvC,gBAAuCA,KAAvC;AAEAtB,MAAAA,GAAG,CAAC,mBAAD,EAAsBuC,CAAtB,EAAyBC,CAAzB,CAAH;;AAEA,UAAIpB,gBAAgB,IAAI,CAACsB,WAAzB,EAAsC;AACpC;AACD;;AAED,UAAMC,YAAY,GAAGrB,KAAK,CAACsB,MAAN,CAAa,UAACC,CAAD;AAAA,eAAOA,CAAC,CAACC,QAAT;AAAA,OAAb,EAAgC,CAAhC,CAArB;AACA,UAAIa,WAAJ,CAXqB,CAarB;;AACA,UAAIhB,YAAY,IAAID,WAAhB,IAA+BC,YAAY,CAACK,IAAb,KAAsBN,WAAW,CAACM,IAArE,EAA2E;AACzEW,QAAAA,WAAW,GAAGjB,WAAW,CAAC6B,QAAZ,CAAqB;AAAEhC,UAAAA,CAAC,EAADA,CAAF;AAAKC,UAAAA,CAAC,EAADA;AAAL,SAArB,oBAAoCG,YAApC,EAAd;AACD,OAFD,MAEO;AACLgB,QAAAA,WAAW,GAAGjB,WAAW,CAAC6B,QAAZ,CAAqB;AAAEhC,UAAAA,CAAC,EAADA,CAAF;AAAKC,UAAAA,CAAC,EAADA;AAAL,SAArB,EAA+BgC,SAA/B,CAAd;AACD;;AAED,YAAKX,WAAL,CAAiBlB,YAAjB,EAA+BgB,WAA/B,EAA4C,IAA5C;AACD,KAhGkB;AAEjB,UAAKc,OAAL,GAAe,MAAKC,cAAL,EAAf;AAFiB;AAGlB;;;;WAeD,0BAAiB;AACf,aAAO,WAAW,CAACC,IAAI,CAACC,MAAL,KAAgB,KAAjB,EAAwBC,OAAxB,EAAlB;AACD;;;WA8ED,kBAAS;AAAA;;AACP,yBAoBI,KAAKxB,KApBT;AAAA,UACEnD,YADF,gBACEA,YADF;AAAA,UAEEwC,WAFF,gBAEEA,WAFF;AAAA,UAGErB,kBAHF,gBAGEA,kBAHF;AAAA,UAIEO,IAJF,gBAIEA,IAJF;AAAA,UAKEf,cALF,gBAKEA,cALF;AAAA,UAMEC,aANF,gBAMEA,aANF;AAAA,UAOEC,MAPF,gBAOEA,MAPF;AAAA,UAQET,eARF,gBAQEA,eARF;AAAA,UASEqB,KATF,gBASEA,KATF;AAAA,UAUES,KAVF,gBAUEA,KAVF;AAAA,UAWElB,MAXF,gBAWEA,MAXF;AAAA,UAYEE,gBAZF,gBAYEA,gBAZF;AAAA,UAaE0D,kBAbF,gBAaEA,kBAbF;AAAA,UAcE7C,UAdF,gBAcEA,UAdF;AAAA,UAeEC,eAfF,gBAeEA,eAfF;AAAA,UAgBEC,SAhBF,gBAgBEA,SAhBF;AAAA,UAiBE4C,gBAjBF,gBAiBEA,gBAjBF;AAAA,UAkBExD,cAlBF,gBAkBEA,cAlBF;AAAA,UAmBEG,aAnBF,gBAmBEA,aAnBF;AAqBA,UAAMJ,KAAN,GAAgB,KAAK+B,KAArB,CAAM/B,KAAN;AAEA,UAAM0D,UAAU,GAAG,4BAAiBjE,MAAjB,EAAyBY,KAAzB,EAAgCC,IAAhC,EAAsC;AAAA,eAAM,MAAI,CAACqD,QAAX;AAAA,OAAtC,CAAnB;AAEA,UAAMC,QAAQ,GAAG5C,WAAW,CAACV,IAAD,CAA5B;AACA,UAAMuD,MAAM,GAAG;AAAEH,QAAAA,UAAU,EAAVA,UAAF;AAAc5D,QAAAA,gBAAgB,EAAhBA;AAAd,OAAf;AAEAE,MAAAA,KAAK,GAAGmB,sCAAsC,CAAC;AAAEnB,QAAAA,KAAK,EAAEA,KAAK,IAAI,EAAlB;AAAsBoB,QAAAA,WAAW,EAAXA;AAAtB,OAAD,CAA9C;AAEA,0BACE,gCAAC,UAAD;AACE,QAAA,OAAO,EAAE,iBAAC0C,CAAD;AAAA,iBAAQ,MAAI,CAACH,QAAL,GAAgBG,CAAxB;AAAA,SADX;AAEE,QAAA,aAAa,EAAEtE,aAFjB;AAGE,QAAA,cAAc,EAAED,cAHlB;AAIE,QAAA,MAAM,EAAEK,MAJV;AAKE,QAAA,kBAAkB,EAAE4D,kBAAkB,IAAI,EAL5C;AAME,QAAA,eAAe,EAAE5C,eANnB;AAOE,QAAA,UAAU,EAAED,UAPd;AAQE,QAAA,SAAS,EAAEE,SARb;AASE,QAAA,KAAK,EAAEC,KATT;AAUE,QAAA,gBAAgB,EAAE2C,gBAVpB;AAWE,QAAA,aAAa,EAAErD,aAXjB;AAYE,QAAA,cAAc,EAAEH;AAZlB,SAaM4D,MAbN,gBAeE;AACE,QAAA,SAAS,EACPpE,MAAM,IAAIA,MAAM,CAACsE,OAAjB,IAA4BtE,MAAM,CAACY,KAAnC,uBAAwDZ,MAAM,CAACsE,OAA/D,eAA2E1D,KAAK,CAAC0D,OAAjF,SAA8Fb;AAFlG,sBAKE,gCAAC,gBAAD,EAAUW,MAAV,CALF,eAME,gCAAC,UAAD,gCAAUjF,YAAV,EAA4BiF,MAA5B,EANF,eAOE,gCAAC,cAAD,gCAAQvD,IAAR;AAAc,QAAA,OAAO,EAAE,KAAK0D;AAA5B,SAA2CH,MAA3C,EAPF,eAQE;AAAM,QAAA,EAAE,YAAK,KAAKV,OAAV;AAAR,sBACE,sEAAUS,QAAV;AAAoB,QAAA,IAAI,EAAC;AAAzB,SADF,MARF,eAYE;AAAG,QAAA,EAAE,EAAC,OAAN;AAAc,QAAA,IAAI,kBAAW,KAAKT,OAAhB;AAAlB,SACG,CAACnE,eAAe,IAAI,EAApB,EAAwBiF,GAAxB,CAA4B,UAAC1C,CAAD,EAAII,KAAJ,EAAc;AACzC,YAAMoB,SAAS,GAAG,MAAI,CAACmB,YAAL,CAAkB3C,CAAlB,CAAlB;;AACA,YAAM4C,QAAQ,GAAG5C,CAAC,CAACG,IAAnB;AAEA,4BACE,gCAAC,SAAD;AACE,UAAA,GAAG,YAAKyC,QAAL,cAAiBxC,KAAjB,QADL;AAEE,UAAA,IAAI,kCAAOJ,CAAP;AAAU6C,YAAAA,QAAQ,EAAE,IAApB;AAA0BC,YAAAA,YAAY,EAAE;AAAxC,YAFN;AAGE,UAAA,SAAS,EAAE,MAAI,CAACC,KAAL,CAAWrC;AAHxB,WAIM4B,MAJN,EADF;AAQD,OAZA,CADH,EAeG7D,KAAK,CAACiE,GAAN,CAAU,UAAC1C,CAAD,EAAII,KAAJ,EAAc;AACvB,YAAMoB,SAAS,GAAG,MAAI,CAACmB,YAAL,CAAkB3C,CAAlB,CAAlB;;AACA,YAAM4C,QAAQ,GAAG5C,CAAC,CAACG,IAAnB;AAEA,4BACE,gCAAC,SAAD;AACE,UAAA,GAAG,YAAKyC,QAAL,cAAiBxC,KAAjB,CADL;AAEE,UAAA,IAAI,EAAEJ,CAFR;AAGE,UAAA,kBAAkB,EAAExB,kBAHtB;AAIE,UAAA,QAAQ,EAAE,MAAI,CAACwE,UAJjB;AAKE,UAAA,UAAU,EAAE,MAAI,CAACC,YALnB;AAME,UAAA,OAAO,EAAE,MAAI,CAACR,SANhB;AAOE,UAAA,WAAW,EAAE,MAAI,CAACS,SAPpB;AAQE,UAAA,UAAU,EAAE,MAAI,CAACC,QARnB;AASE,UAAA,SAAS,EAAE,MAAI,CAACJ,KAAL,CAAWrC,SATxB;AAUE,UAAA,YAAY,EAAEb,WAAW,IAAI+C,QAAQ,KAAK/C,WAAW,CAACM;AAVxD,WAWMmC,MAXN,EADF;AAeD,OAnBA,CAfH,eAmCE;AACE,QAAA,GAAG,EAAE,aAAC5B,SAAD;AAAA,iBAAgB,MAAI,CAACA,SAAL,GAAiBA,SAAjC;AAAA,SADP;AAEE,QAAA,CAAC,EAAC,GAFJ;AAGE,QAAA,CAAC,EAAC;AAHJ,SAIM3B,IAJN;AAKE,QAAA,KAAK,EAAE;AAAEqE,UAAAA,aAAa,EAAE;AAAjB;AALT,SAnCF,CAZF,CAfF,CADF;AA0ED;;;EA5MwBC,kBAAM7B,S;;;iCAApBjB,K,+CAONnD,c;AACHyC,EAAAA,WAAW,EAAEvC,sBAAUgG;;iCARd/C,K,kBAWW;AACpB3B,EAAAA,aAAa,EAAE,yBAAM,CAAE,CADH;AAEpBZ,EAAAA,cAAc,EAAE,KAFI;AAGpBC,EAAAA,aAAa,EAAE;AAHK,C;eAoMTsC,K","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 { 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 disabledLabels: PropTypes.bool,\n disabledTitle: PropTypes.bool,\n domain: types.DomainType,\n labels: PropTypes.shape(LabelType),\n labelModeEnabled: PropTypes.bool,\n coordinatesOnHover: PropTypes.bool,\n marks: PropTypes.array,\n onChangeLabels: PropTypes.func,\n onChangeMarks: PropTypes.func,\n onChangeTitle: PropTypes.func,\n range: types.DomainType,\n size: PropTypes.shape({\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n }),\n showLabels: PropTypes.bool,\n showPixelGuides: PropTypes.bool,\n showTitle: PropTypes.bool,\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 constructor(props) {\n super(props);\n this.maskUid = this.generateMaskId();\n }\n\n static propTypes = {\n ...graphPropTypes,\n currentTool: PropTypes.object,\n };\n\n static defaultProps = {\n onChangeMarks: () => {},\n disabledLabels: false,\n disabledTitle: false,\n };\n\n state = {};\n\n generateMaskId() {\n return 'graph-' + (Math.random() * 10000).toFixed();\n }\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 disabledLabels,\n disabledTitle,\n domain,\n backgroundMarks,\n range,\n title,\n labels,\n labelModeEnabled,\n labelsPlaceholders,\n showLabels,\n showPixelGuides,\n showTitle,\n titlePlaceholder,\n onChangeLabels,\n onChangeTitle,\n } = this.props;\n let { marks } = this.props;\n\n const graphProps = createGraphProps(domain, range, size, () => this.rootNode);\n\n const maskSize = getMaskSize(size);\n const common = { graphProps, labelModeEnabled };\n\n marks = removeBuildingToolIfCurrentToolDiffers({ marks: marks || [], currentTool });\n\n return (\n <Root\n rootRef={(r) => (this.rootNode = r)}\n disabledTitle={disabledTitle}\n disabledLabels={disabledLabels}\n labels={labels}\n labelsPlaceholders={labelsPlaceholders || {}}\n showPixelGuides={showPixelGuides}\n showLabels={showLabels}\n showTitle={showTitle}\n title={title}\n titlePlaceholder={titlePlaceholder}\n onChangeTitle={onChangeTitle}\n onChangeLabels={onChangeLabels}\n {...common}\n >\n <g\n transform={\n domain && domain.padding && domain.range ? `translate(${domain.padding}, ${range.padding})` : undefined\n }\n >\n <Grid {...common} />\n <Axes {...axesSettings} {...common} />\n <Bg {...size} onClick={this.onBgClick} {...common} />\n <mask id={`${this.maskUid}`}>\n <rect {...maskSize} fill=\"white\" /> {/* TODO hardcoded color */}\n </mask>\n\n <g id=\"marks\" mask={`url('#${this.maskUid}')`}>\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 <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"],"file":"graph.js"}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "2.12.
|
|
6
|
+
"version": "2.12.19-next.2+dc102c85",
|
|
7
7
|
"description": "Graphing components",
|
|
8
8
|
"keywords": [
|
|
9
9
|
"react",
|
|
@@ -44,6 +44,6 @@
|
|
|
44
44
|
"peerDependencies": {
|
|
45
45
|
"react": "^16.8.1"
|
|
46
46
|
},
|
|
47
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "dc102c858100d64ed2e1e1a3f07ca50a5e67640c",
|
|
48
48
|
"scripts": {}
|
|
49
49
|
}
|
package/src/graph.jsx
CHANGED
|
@@ -66,7 +66,7 @@ export const removeBuildingToolIfCurrentToolDiffers = ({ marks, currentTool }) =
|
|
|
66
66
|
export class Graph extends React.Component {
|
|
67
67
|
constructor(props) {
|
|
68
68
|
super(props);
|
|
69
|
-
this.maskUid =
|
|
69
|
+
this.maskUid = this.generateMaskId();
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
static propTypes = {
|
|
@@ -82,6 +82,10 @@ export class Graph extends React.Component {
|
|
|
82
82
|
|
|
83
83
|
state = {};
|
|
84
84
|
|
|
85
|
+
generateMaskId() {
|
|
86
|
+
return 'graph-' + (Math.random() * 10000).toFixed();
|
|
87
|
+
}
|
|
88
|
+
|
|
85
89
|
componentDidMount = () => this.setState({ labelNode: this.labelNode });
|
|
86
90
|
|
|
87
91
|
changeMark = (oldMark, newMark) => {
|