@pie-lib/graphing-module 1.4.4 → 1.6.1

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/module/index.js CHANGED
@@ -1,6 +1,7 @@
1
- import {_dll_prop_types, _dll_react, _dll_material_ui__core_styles, _dll_material_ui__core, _dll_pie_lib__render_ui, _dll_react_dom, _dll_lodash, _dll_debug, _dll_classnames, _dll_material_ui__core_styles_color_manipulator, _dll_material_ui__icons} from "../../shared-module@^1.4.28/module/index.js";
2
- import {_dll_pie_lib__config_ui} from "../../config-module@^2.0.4/module/index.js";
3
- import {_dll_pie_lib__editable_html} from "../../editable-html-module@^2.1.3/module/index.js";
1
+ import {_dll_prop_types, _dll_react, _dll_material_ui__core_styles, _dll_material_ui__core, _dll_pie_lib__render_ui, _dll_react_dom, _dll_lodash, _dll_debug, _dll_classnames, _dll_material_ui__core_styles_color_manipulator, _dll_material_ui__icons} from "../../shared-module@^1.5.1/module/index.js";
2
+ import {_dll_pie_lib__drag} from "../../drag-module@^1.0.54/module/index.js";
3
+ import {_dll_pie_lib__config_ui} from "../../config-module@^2.1.2/module/index.js";
4
+ import {_dll_pie_lib__editable_html} from "../../editable-html-module@^3.0.1/module/index.js";
4
5
  const PropTypes$D = _dll_prop_types;
5
6
  const BaseDomainRangeType = {
6
7
  min: PropTypes$D.number.isRequired,
@@ -14268,7 +14269,31 @@ const {withStyles: withStyles$3} = _dll_material_ui__core_styles;
14268
14269
  const cn = _dll_classnames;
14269
14270
  const {Button: Button$1} = _dll_material_ui__core;
14270
14271
  const {color: color$3} = _dll_pie_lib__render_ui;
14272
+ const {withDragContext: withDragContext} = _dll_pie_lib__drag;
14273
+ const {DragSource: DragSource} = _dll_pie_lib__drag;
14274
+ const {DropTarget: DropTarget} = _dll_pie_lib__drag;
14271
14275
  const _jsxFileName$5 = "/home/circleci/repo/packages/graphing/src/toggle-bar.jsx";
14276
+ function _optionalChain(ops) {
14277
+ let lastAccessLHS = undefined;
14278
+ let value = ops[0];
14279
+ let i = 1;
14280
+ while (i < ops.length) {
14281
+ const op = ops[i];
14282
+ const fn = ops[i + 1];
14283
+ i += 2;
14284
+ if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {
14285
+ return undefined;
14286
+ }
14287
+ if (op === 'access' || op === 'optionalAccess') {
14288
+ lastAccessLHS = value;
14289
+ value = fn(value);
14290
+ } else if (op === 'call' || op === 'optionalCall') {
14291
+ value = fn((...args) => value.call(lastAccessLHS, ...args));
14292
+ lastAccessLHS = undefined;
14293
+ }
14294
+ }
14295
+ return value;
14296
+ }
14272
14297
  const buttonStyles = () => ({
14273
14298
  root: {
14274
14299
  color: color$3.text(),
@@ -14309,12 +14334,13 @@ const MiniButton = withStyles$3(buttonStyles)(props => {
14309
14334
  __self: undefined,
14310
14335
  __source: {
14311
14336
  fileName: _jsxFileName$5,
14312
- lineNumber: 38
14337
+ lineNumber: 39
14313
14338
  }
14314
14339
  }, value);
14315
14340
  });
14316
14341
  MiniButton.propTypes = {
14317
14342
  disabled: PropTypes$5.bool,
14343
+ classes: PropTypes$5.object,
14318
14344
  className: PropTypes$5.string,
14319
14345
  disabledClassName: PropTypes$5.string,
14320
14346
  selected: PropTypes$5.bool,
@@ -14325,6 +14351,7 @@ class ToggleBar extends React$5.Component {
14325
14351
  constructor(...args) {
14326
14352
  super(...args);
14327
14353
  ToggleBar.prototype.__init.call(this);
14354
+ ToggleBar.prototype.__init2.call(this);
14328
14355
  }
14329
14356
  static __initStatic() {
14330
14357
  this.propTypes = {
@@ -14333,7 +14360,9 @@ class ToggleBar extends React$5.Component {
14333
14360
  options: PropTypes$5.arrayOf(PropTypes$5.string),
14334
14361
  selectedToolType: PropTypes$5.string,
14335
14362
  disabled: PropTypes$5.bool,
14336
- onChange: PropTypes$5.func
14363
+ draggableTools: PropTypes$5.bool,
14364
+ onChange: PropTypes$5.func,
14365
+ onChangeToolsOrder: PropTypes$5.func
14337
14366
  };
14338
14367
  }
14339
14368
  static __initStatic2() {
@@ -14342,20 +14371,41 @@ class ToggleBar extends React$5.Component {
14342
14371
  __init() {
14343
14372
  this.select = e => this.props.onChange(e.target.textContent);
14344
14373
  }
14374
+ __init2() {
14375
+ this.moveTool = (dragIndex, hoverIndex) => {
14376
+ const {options, onChangeToolsOrder} = this.props;
14377
+ const dragged = options[dragIndex];
14378
+ options.splice(dragIndex, 1);
14379
+ options.splice(hoverIndex, 0, dragged);
14380
+ onChangeToolsOrder(options);
14381
+ };
14382
+ }
14345
14383
  render() {
14346
- const {classes, className, disabled, options, selectedToolType} = this.props;
14384
+ const {classes, className, disabled, options, selectedToolType, draggableTools} = this.props;
14347
14385
  return React$5.createElement('div', {
14348
- className: cn(className),
14386
+ className: cn(className, classes.toolsContainer),
14349
14387
  __self: this,
14350
14388
  __source: {
14351
14389
  fileName: _jsxFileName$5,
14352
- lineNumber: 79
14390
+ lineNumber: 94
14353
14391
  }
14354
- }, (options || []).map(option => {
14392
+ }, (options || []).map((option, index) => {
14355
14393
  if ((allTools || []).includes(option)) {
14356
14394
  const isSelected = option === selectedToolType;
14357
- return React$5.createElement(MiniButton, {
14395
+ const toolRef = React$5.createRef();
14396
+ return React$5.createElement(DragTool, {
14358
14397
  key: option,
14398
+ index: index,
14399
+ draggable: draggableTools,
14400
+ moveTool: this.moveTool,
14401
+ classes: classes,
14402
+ toolRef: toolRef,
14403
+ __self: this,
14404
+ __source: {
14405
+ fileName: _jsxFileName$5,
14406
+ lineNumber: 101
14407
+ }
14408
+ }, React$5.createElement(MiniButton, {
14359
14409
  className: cn(classes.button, isSelected && classes.selected),
14360
14410
  disabled: disabled,
14361
14411
  disableRipple: true,
@@ -14365,9 +14415,9 @@ class ToggleBar extends React$5.Component {
14365
14415
  __self: this,
14366
14416
  __source: {
14367
14417
  fileName: _jsxFileName$5,
14368
- lineNumber: 85
14418
+ lineNumber: 109
14369
14419
  }
14370
- });
14420
+ }));
14371
14421
  }
14372
14422
  }));
14373
14423
  }
@@ -14375,27 +14425,135 @@ class ToggleBar extends React$5.Component {
14375
14425
  ToggleBar.__initStatic();
14376
14426
  ToggleBar.__initStatic2();
14377
14427
  const styles$3 = theme => ({
14428
+ toolsContainer: {
14429
+ display: 'flex',
14430
+ flexWrap: 'wrap'
14431
+ },
14378
14432
  button: {
14379
14433
  marginRight: theme.spacing.unit / 2,
14380
14434
  marginBottom: theme.spacing.unit / 2,
14381
14435
  color: color$3.text(),
14382
14436
  backgroundColor: color$3.background()
14437
+ },
14438
+ under: {
14439
+ position: 'absolute',
14440
+ top: 0,
14441
+ left: 0,
14442
+ zIndex: -1,
14443
+ pointerEvents: 'none'
14444
+ },
14445
+ wrapper: {
14446
+ position: 'relative'
14447
+ },
14448
+ hidden: {
14449
+ opacity: 0
14383
14450
  }
14384
14451
  });
14385
- var ToggleBar$1 = withStyles$3(styles$3)(ToggleBar);
14452
+ var ToggleBar$1 = withDragContext(withStyles$3(styles$3)(ToggleBar));
14453
+ const DRAG_TYPE = 'tool';
14454
+ class Item extends React$5.Component {
14455
+ static __initStatic3() {
14456
+ this.propTypes = {
14457
+ classes: PropTypes$5.object.isRequired,
14458
+ className: PropTypes$5.string,
14459
+ children: PropTypes$5.oneOfType([PropTypes$5.arrayOf(PropTypes$5.node), PropTypes$5.node]),
14460
+ connectDragSource: PropTypes$5.func.isRequired,
14461
+ connectDragPreview: PropTypes$5.func.isRequired,
14462
+ connectDropTarget: PropTypes$5.func.isRequired,
14463
+ isDragging: PropTypes$5.bool
14464
+ };
14465
+ }
14466
+ static __initStatic4() {
14467
+ this.defaultProps = {};
14468
+ }
14469
+ render() {
14470
+ const {classes, children, connectDragSource, connectDropTarget, connectDragPreview, isDragging, toolRef} = this.props;
14471
+ return React$5.createElement('div', {
14472
+ className: classes.wrapper,
14473
+ ref: toolRef,
14474
+ __self: this,
14475
+ __source: {
14476
+ fileName: _jsxFileName$5,
14477
+ lineNumber: 181
14478
+ }
14479
+ }, connectDragSource(connectDropTarget(React$5.createElement('div', {
14480
+ className: isDragging && classes.hidden,
14481
+ __self: this,
14482
+ __source: {
14483
+ fileName: _jsxFileName$5,
14484
+ lineNumber: 183
14485
+ }
14486
+ }, children))), connectDragPreview(React$5.createElement('div', {
14487
+ className: classes.under,
14488
+ __self: this,
14489
+ __source: {
14490
+ fileName: _jsxFileName$5,
14491
+ lineNumber: 185
14492
+ }
14493
+ }, children)));
14494
+ }
14495
+ }
14496
+ Item.__initStatic3();
14497
+ Item.__initStatic4();
14498
+ const itemSource = {
14499
+ canDrag(props) {
14500
+ return props.draggable;
14501
+ },
14502
+ beginDrag(props) {
14503
+ return {
14504
+ index: props.index
14505
+ };
14506
+ }
14507
+ };
14508
+ const itemTarget = {
14509
+ hover(props, monitor) {
14510
+ const dragIndex = monitor.getItem().index;
14511
+ const {toolRef, index: hoverIndex} = props;
14512
+ if (dragIndex === hoverIndex || !toolRef.current) {
14513
+ return;
14514
+ }
14515
+ const hoverBoundingRect = _optionalChain([toolRef, 'access', _ => _.current, 'optionalAccess', _2 => _2.getBoundingClientRect, 'call', _3 => _3()]);
14516
+ const hoverMiddleX = (hoverBoundingRect.right - hoverBoundingRect.left) / 2;
14517
+ const clientOffset = monitor.getClientOffset();
14518
+ const hoverClientX = clientOffset.x - hoverBoundingRect.left;
14519
+ if (dragIndex < hoverIndex && hoverClientX < hoverMiddleX) {
14520
+ return;
14521
+ }
14522
+ if (dragIndex > hoverIndex && hoverClientX > hoverMiddleX) {
14523
+ return;
14524
+ }
14525
+ props.moveTool(dragIndex, hoverIndex);
14526
+ monitor.getItem().index = hoverIndex;
14527
+ }
14528
+ };
14529
+ const collectTarget = connect => ({
14530
+ connectDropTarget: connect.dropTarget()
14531
+ });
14532
+ const collectSource = (connect, monitor) => ({
14533
+ connectDragSource: connect.dragSource(),
14534
+ connectDragPreview: connect.dragPreview(),
14535
+ isDragging: monitor.isDragging()
14536
+ });
14537
+ const DragTool = DropTarget(DRAG_TYPE, itemTarget, collectTarget)(DragSource(DRAG_TYPE, itemSource, collectSource)(Item));
14386
14538
  const React$4 = _dll_react;
14387
14539
  const PropTypes$4 = _dll_prop_types;
14388
14540
  const classNames$2 = _dll_classnames;
14389
14541
  const _jsxFileName$4 = "/home/circleci/repo/packages/graphing/src/tool-menu.jsx";
14390
14542
  class ToolMenu extends React$4.Component {
14543
+ constructor(...args) {
14544
+ super(...args);
14545
+ ToolMenu.prototype.__init.call(this);
14546
+ }
14391
14547
  static __initStatic() {
14392
14548
  this.propTypes = {
14393
14549
  className: PropTypes$4.string,
14394
14550
  currentToolType: PropTypes$4.string,
14395
14551
  disabled: PropTypes$4.bool,
14552
+ draggableTools: PropTypes$4.bool,
14396
14553
  labelModeEnabled: PropTypes$4.bool,
14397
14554
  onChange: PropTypes$4.func,
14398
14555
  onToggleLabelMode: PropTypes$4.func,
14556
+ onChangeTools: PropTypes$4.func,
14399
14557
  toolbarTools: PropTypes$4.arrayOf(PropTypes$4.string)
14400
14558
  };
14401
14559
  }
@@ -14404,8 +14562,17 @@ class ToolMenu extends React$4.Component {
14404
14562
  toolbarTools: []
14405
14563
  };
14406
14564
  }
14565
+ __init() {
14566
+ this.updateToolsOrder = (tools, showLabel) => {
14567
+ const {onChangeTools} = this.props;
14568
+ if (showLabel) {
14569
+ tools.push('label');
14570
+ }
14571
+ onChangeTools(tools);
14572
+ };
14573
+ }
14407
14574
  render() {
14408
- const {className, currentToolType, disabled, labelModeEnabled, onToggleLabelMode, onChange} = this.props;
14575
+ const {className, currentToolType, disabled, draggableTools, labelModeEnabled, onToggleLabelMode, onChange} = this.props;
14409
14576
  let {toolbarTools} = this.props;
14410
14577
  const showLabel = toolbarTools && toolbarTools.some(t => t === 'label');
14411
14578
  toolbarTools = (toolbarTools || []).filter(tT => tT !== 'label');
@@ -14414,17 +14581,19 @@ class ToolMenu extends React$4.Component {
14414
14581
  __self: this,
14415
14582
  __source: {
14416
14583
  fileName: _jsxFileName$4,
14417
- lineNumber: 38
14584
+ lineNumber: 51
14418
14585
  }
14419
14586
  }, React$4.createElement(ToggleBar$1, {
14420
14587
  disabled: disabled,
14588
+ draggableTools: draggableTools,
14421
14589
  options: toolbarTools,
14422
14590
  selectedToolType: currentToolType,
14423
14591
  onChange: onChange,
14592
+ onChangeToolsOrder: tools => this.updateToolsOrder(tools, showLabel),
14424
14593
  __self: this,
14425
14594
  __source: {
14426
14595
  fileName: _jsxFileName$4,
14427
- lineNumber: 39
14596
+ lineNumber: 52
14428
14597
  }
14429
14598
  }), showLabel && React$4.createElement(MiniButton, {
14430
14599
  disabled: disabled,
@@ -14434,7 +14603,7 @@ class ToolMenu extends React$4.Component {
14434
14603
  __self: this,
14435
14604
  __source: {
14436
14605
  fileName: _jsxFileName$4,
14437
- lineNumber: 47
14606
+ lineNumber: 62
14438
14607
  }
14439
14608
  }));
14440
14609
  }
@@ -14583,6 +14752,11 @@ const Collapsible = ({classes, children, title}) => React$2.createElement(Expans
14583
14752
  lineNumber: 53
14584
14753
  }
14585
14754
  }, children));
14755
+ Collapsible.propTypes = {
14756
+ classes: PropTypes$2.object,
14757
+ children: PropTypes$2.array,
14758
+ title: PropTypes$2.string
14759
+ };
14586
14760
  class GraphWithControls extends React$2.Component {
14587
14761
  static __initStatic() {
14588
14762
  this.propTypes = {
@@ -14630,7 +14804,7 @@ class GraphWithControls extends React$2.Component {
14630
14804
  }
14631
14805
  render() {
14632
14806
  let {currentTool, labelModeEnabled} = this.state;
14633
- const {axesSettings, classes, className, coordinatesOnHover, collapsibleToolbar, collapsibleToolbarTitle, disabled, domain, labels, onChangeMarks, onUndo, onRedo, onReset, range, size, title} = this.props;
14807
+ const {axesSettings, classes, className, coordinatesOnHover, collapsibleToolbar, collapsibleToolbarTitle, disabled, domain, draggableTools, labels, onChangeMarks, onChangeTools, onUndo, onRedo, onReset, range, size, title} = this.props;
14634
14808
  let {backgroundMarks, marks, toolbarTools} = this.props;
14635
14809
  toolbarTools = uniq(toolbarTools || []).filter(tT => !!isString(tT)) || [];
14636
14810
  backgroundMarks = filterByValidToolTypes(backgroundMarks || []);
@@ -14643,19 +14817,21 @@ class GraphWithControls extends React$2.Component {
14643
14817
  __self: this,
14644
14818
  __source: {
14645
14819
  fileName: _jsxFileName$2,
14646
- lineNumber: 135
14820
+ lineNumber: 143
14647
14821
  }
14648
14822
  }, React$2.createElement(ToolMenu, {
14649
14823
  currentToolType: currentTool && currentTool.type,
14650
14824
  disabled: !!disabled,
14825
+ draggableTools: draggableTools,
14651
14826
  labelModeEnabled: labelModeEnabled,
14652
14827
  onChange: tool => this.changeCurrentTool(tool, tools),
14653
14828
  onToggleLabelMode: this.toggleLabelMode,
14654
14829
  toolbarTools: toolbarTools,
14830
+ onChangeTools: onChangeTools,
14655
14831
  __self: this,
14656
14832
  __source: {
14657
14833
  fileName: _jsxFileName$2,
14658
- lineNumber: 136
14834
+ lineNumber: 144
14659
14835
  }
14660
14836
  }), !disabled && React$2.createElement(UndoRedo$1, {
14661
14837
  onUndo: onUndo,
@@ -14664,7 +14840,7 @@ class GraphWithControls extends React$2.Component {
14664
14840
  __self: this,
14665
14841
  __source: {
14666
14842
  fileName: _jsxFileName$2,
14667
- lineNumber: 145
14843
+ lineNumber: 155
14668
14844
  }
14669
14845
  }));
14670
14846
  return React$2.createElement('div', {
@@ -14672,14 +14848,14 @@ class GraphWithControls extends React$2.Component {
14672
14848
  __self: this,
14673
14849
  __source: {
14674
14850
  fileName: _jsxFileName$2,
14675
- lineNumber: 150
14851
+ lineNumber: 160
14676
14852
  }
14677
14853
  }, React$2.createElement('div', {
14678
14854
  className: classes.controls,
14679
14855
  __self: this,
14680
14856
  __source: {
14681
14857
  fileName: _jsxFileName$2,
14682
- lineNumber: 151
14858
+ lineNumber: 161
14683
14859
  }
14684
14860
  }, collapsibleToolbar ? React$2.createElement(Collapsible, {
14685
14861
  classes: classes,
@@ -14687,14 +14863,14 @@ class GraphWithControls extends React$2.Component {
14687
14863
  __self: this,
14688
14864
  __source: {
14689
14865
  fileName: _jsxFileName$2,
14690
- lineNumber: 153
14866
+ lineNumber: 163
14691
14867
  }
14692
14868
  }, graphActions) : graphActions), React$2.createElement('div', {
14693
14869
  ref: r => this.labelNode = r,
14694
14870
  __self: this,
14695
14871
  __source: {
14696
14872
  fileName: _jsxFileName$2,
14697
- lineNumber: 161
14873
+ lineNumber: 171
14698
14874
  }
14699
14875
  }), React$2.createElement(Graph, {
14700
14876
  axesSettings: axesSettings,
@@ -14713,7 +14889,7 @@ class GraphWithControls extends React$2.Component {
14713
14889
  __self: this,
14714
14890
  __source: {
14715
14891
  fileName: _jsxFileName$2,
14716
- lineNumber: 163
14892
+ lineNumber: 173
14717
14893
  }
14718
14894
  }));
14719
14895
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-lib/graphing-module",
3
- "version": "1.4.4",
3
+ "version": "1.6.1",
4
4
  "mappings": {
5
5
  "@pie-lib/plot": "_dll_pie_lib__plot",
6
6
  "@pie-lib/graphing": "_dll_pie_lib__graphing",
@@ -13,7 +13,7 @@
13
13
  "version": "2.2.0"
14
14
  },
15
15
  "@pie-lib/graphing": {
16
- "version": "2.7.0"
16
+ "version": "2.8.1"
17
17
  },
18
18
  "d3-scale": {
19
19
  "version": "2.2.2"
@@ -22,20 +22,24 @@
22
22
  "version": "1.4.2"
23
23
  }
24
24
  },
25
- "hash": "6b8be25351adaf106676169e8c7daa35ea1e58b9"
25
+ "hash": "d17b883f879e8c15e62756f2846d890d14b10b30"
26
26
  },
27
27
  "modules": [
28
28
  {
29
29
  "name": "@pie-lib/shared-module",
30
- "version": "^1.4.28"
30
+ "version": "^1.5.1"
31
+ },
32
+ {
33
+ "name": "@pie-lib/drag-module",
34
+ "version": "^1.0.54"
31
35
  },
32
36
  {
33
37
  "name": "@pie-lib/config-module",
34
- "version": "^2.0.4"
38
+ "version": "^2.1.2"
35
39
  },
36
40
  {
37
41
  "name": "@pie-lib/editable-html-module",
38
- "version": "^2.1.3"
42
+ "version": "^3.0.1"
39
43
  }
40
44
  ],
41
45
  "isLocal": true
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-lib/graphing-module",
3
- "version": "1.4.4",
3
+ "version": "1.6.1",
4
4
  "module": "module/index.js",
5
5
  "repository": "pie-framework/pie-lib",
6
6
  "publishConfig": {