react-align 1.1.6 → 2.0.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.
@@ -6,15 +6,15 @@ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'defau
6
6
 
7
7
  var React = require('react');
8
8
  var React__default = _interopDefault(React);
9
- var reactDnd = require('react-dnd');
10
- var reactDndHtml5Backend = require('react-dnd-html5-backend');
9
+ var reactBeautifulDnd = require('react-beautiful-dnd');
11
10
  var glamor = require('glamor');
12
11
 
13
- var EditorModeContext = /*#__PURE__*/React.createContext({
14
- enabled: undefined
12
+ var Context = /*#__PURE__*/React.createContext({
13
+ editing: false,
14
+ isDragging: false
15
15
  });
16
- var useEditorMode = function useEditorMode() {
17
- return React.useContext(EditorModeContext);
16
+ var useAlignContext = function useAlignContext() {
17
+ return React.useContext(Context);
18
18
  };
19
19
 
20
20
  function styleInject(css, ref) {
@@ -44,25 +44,45 @@ function styleInject(css, ref) {
44
44
  }
45
45
  }
46
46
 
47
- var css_248z = ".wrapper{height:100%}.section,.wrapper{display:flex;justify-content:space-between}.section{flex-direction:column}.area{border:1px solid transparent;border-radius:8px;box-sizing:border-box;display:flex;position:relative}.area-transition-in{transition:all .3s ease-in-out,min-height .5s ease-in-out .2s,min-width .5s ease-in-out .2s}.area-transition-out{transition:all .3s ease-in-out .4s,min-height .5s ease-in-out .2s,min-width .5s ease-in-out .2s}.item{border:1px solid transparent;border-radius:6px;box-sizing:border-box;margin:6px}.vertical{flex-direction:column}.vertical-r{flex-direction:column-reverse}.horizontal{flex-direction:row}.horizontal-r{flex-direction:row-reverse}.stretch{flex:auto}.middle{flex-grow:0;flex:auto}.just-centered{justify-content:center}.just-end{justify-content:flex-end}.end{align-items:flex-end}.hide{display:none}";
47
+ var css_248z = ".wrapper{height:100%}.section,.wrapper{display:flex;justify-content:space-between}.section{flex-direction:column}.area{border:1px solid transparent;border-radius:8px;box-sizing:border-box;display:flex;position:relative}.area-transition-in{transition:all .3s ease-in-out,min-height .5s ease-in-out .2s,min-width .5s ease-in-out .2s}.area-transition-out{transition:all .3s ease-in-out .4s,min-height .5s ease-in-out .2s,min-width .5s ease-in-out .2s}.item{border:1px solid transparent;border-radius:6px;box-sizing:border-box;margin:6px;min-height:40px;min-width:70px;position:relative}.stretch{flex:auto}.middle{flex-grow:0;flex:auto}.just-centered{justify-content:center}.just-end{justify-content:flex-end}.end{align-items:flex-end}.hide{display:none}.overlay{background:rgba(0,0,0,.6);bottom:0;box-sizing:border-box;left:0;position:absolute;right:0;top:0}.overlay-buttons{box-sizing:border-box;display:flex;justify-content:space-between;padding:6px}";
48
48
  styleInject(css_248z);
49
49
 
50
50
  var GridWrapper = function GridWrapper(_ref) {
51
51
  var className = _ref.className,
52
- enabled = _ref.enabled,
52
+ editing = _ref.editing,
53
53
  vertical = _ref.vertical,
54
54
  stretch = _ref.stretch,
55
- styles = _ref.styles,
56
- editorStyles = _ref.editorStyles,
57
- children = _ref.children;
55
+ style = _ref.style,
56
+ editorStyle = _ref.editorStyle,
57
+ children = _ref.children,
58
+ onMove = _ref.onMove,
59
+ onAlignChange = _ref.onAlignmentChange,
60
+ onExtend = _ref.onExtend;
61
+
62
+ var _useState = React.useState(false),
63
+ isDragging = _useState[0],
64
+ setDragging = _useState[1];
65
+
66
+ var handleDragStart = React.useCallback(function () {
67
+ setDragging(true);
68
+ }, []);
69
+ var handleDragEnd = React.useCallback(function (result, _provided) {
70
+ setDragging(false);
71
+ if (!result.destination || result.reason !== 'DROP' || result.destination.droppableId === result.source.droppableId && result.destination.index === result.source.index) return;
72
+ onMove == null ? void 0 : onMove(result.draggableId, result.destination.droppableId, result.destination.index, result.source.droppableId, result.source.index);
73
+ }, [onMove]);
58
74
  return React__default.createElement("div", {
59
75
  className: "wrapper " + className + " " + (vertical && 'vertical') + " " + (stretch && 'stretch'),
60
- style: enabled ? editorStyles : styles
61
- }, React__default.createElement(reactDnd.DndProvider, {
62
- backend: reactDndHtml5Backend.HTML5Backend
63
- }, React__default.createElement(EditorModeContext.Provider, {
76
+ style: editing ? editorStyle : style
77
+ }, React__default.createElement(reactBeautifulDnd.DragDropContext, {
78
+ onDragStart: handleDragStart,
79
+ onDragEnd: handleDragEnd
80
+ }, React__default.createElement(Context.Provider, {
64
81
  value: {
65
- enabled: enabled
82
+ editing: !!editing,
83
+ onAlignChange: onAlignChange,
84
+ onExtend: onExtend,
85
+ isDragging: isDragging
66
86
  }
67
87
  }, children)));
68
88
  };
@@ -85,26 +105,41 @@ function _extends() {
85
105
  return _extends.apply(this, arguments);
86
106
  }
87
107
 
108
+ function _objectWithoutPropertiesLoose(source, excluded) {
109
+ if (source == null) return {};
110
+ var target = {};
111
+ var sourceKeys = Object.keys(source);
112
+ var key, i;
113
+
114
+ for (i = 0; i < sourceKeys.length; i++) {
115
+ key = sourceKeys[i];
116
+ if (excluded.indexOf(key) >= 0) continue;
117
+ target[key] = source[key];
118
+ }
119
+
120
+ return target;
121
+ }
122
+
88
123
  var GridSection = function GridSection(_ref) {
89
124
  var className = _ref.className,
90
125
  horizontal = _ref.horizontal,
91
126
  stretch = _ref.stretch,
92
127
  fixedWidth = _ref.fixedWidth,
93
128
  fixedHeight = _ref.fixedHeight,
94
- styles = _ref.styles,
95
- editorStyles = _ref.editorStyles,
129
+ style = _ref.style,
130
+ editorStyle = _ref.editorStyle,
96
131
  children = _ref.children;
97
132
 
98
- var _useEditorMode = useEditorMode(),
99
- enabled = _useEditorMode.enabled;
133
+ var _useAlignContext = useAlignContext(),
134
+ enabled = _useAlignContext.editing;
100
135
 
101
- var stylesFromProps = enabled ? editorStyles : styles;
102
136
  return React__default.createElement("div", {
103
- className: "section " + className + " " + (horizontal && 'horizontal') + " " + (stretch && 'stretch'),
104
- style: _extends({}, stylesFromProps, {
105
- height: fixedHeight + 'px',
137
+ className: "section " + className + " " + (horizontal ? 'horizontal' : '') + " " + (stretch ? 'stretch' : ''),
138
+ style: _extends({}, enabled ? editorStyle : style, typeof fixedHeight === 'number' ? {
139
+ height: fixedHeight + 'px'
140
+ } : {}, typeof fixedWidth === 'number' ? {
106
141
  width: fixedWidth + 'px'
107
- })
142
+ } : {})
108
143
  }, children);
109
144
  };
110
145
 
@@ -400,330 +435,203 @@ var Icon = function Icon(_ref) {
400
435
  var className = _ref.className,
401
436
  name = _ref.name,
402
437
  size = _ref.size,
403
- onClick = _ref.onClick,
404
- styles = _ref.styles;
438
+ style = _ref.style,
439
+ onClick = _ref.onClick;
405
440
  var LocalIconComponent = Icons[name];
406
441
  return React__default.createElement(LocalIconComponent, Object.assign({
407
442
  className: className
408
443
  }, IconStyles(size), {
409
- style: styles,
444
+ style: style,
410
445
  onClick: onClick
411
446
  }));
412
447
  };
413
448
 
414
- var ItemType = {
415
- ITEM: 'react-align_item',
416
- GROUP: 'react-align_group'
417
- };
449
+ var alignments = ['start', 'centered', 'end'];
450
+ function GridArea(_ref) {
451
+ var id = _ref.id,
452
+ className = _ref.className,
453
+ vertical = _ref.vertical,
454
+ stretch = _ref.stretch,
455
+ end = _ref.end,
456
+ disabled = _ref.disabled,
457
+ align = _ref.align,
458
+ onAlignmentChange = _ref.onAlignmentChange,
459
+ children = _ref.children,
460
+ style = _ref.style,
461
+ editorStyle = _ref.editorStyle,
462
+ _ref$iconColor = _ref.iconColor,
463
+ iconColor = _ref$iconColor === void 0 ? '#FFFFFF' : _ref$iconColor;
464
+
465
+ var _useAlignContext = useAlignContext(),
466
+ enabled = _useAlignContext.editing,
467
+ onAlignChange2 = _useAlignContext.onAlignChange;
468
+
469
+ var handleAlignChange = React.useCallback(function () {
470
+ var a = alignments[(align ? alignments.indexOf(align) + 1 : 0) % alignments.length];
471
+ onAlignmentChange == null ? void 0 : onAlignmentChange(a);
472
+ onAlignChange2 == null ? void 0 : onAlignChange2(id, a);
473
+ }, [align, onAlignmentChange, onAlignChange2, id]);
474
+ var buttonStyle = React.useMemo(function () {
475
+ return {
476
+ position: 'absolute',
477
+ left: vertical ? end ? 0 : undefined : '50%',
478
+ right: vertical ? !end ? 0 : undefined : '50%',
479
+ bottom: !vertical && !end ? 0 : vertical ? '50%' : undefined,
480
+ top: vertical ? '50%' : end ? 0 : undefined,
481
+ opacity: !disabled && enabled && align ? 1 : 0,
482
+ pointerEvents: !disabled && enabled && align ? 'auto' : 'none',
483
+ transition: 'all 0.5s ease-in-out'
484
+ };
485
+ }, [vertical, end, disabled, enabled, align]); // Rebuilds the GridItem children to receive their parent GridArea's 'end' and 'vertical' values.
486
+ // Used to know where to align the overlay buttons (end) and how to extend the GridItems (vertical).
487
+
488
+ var childrenWithParentProps = React.useMemo(function () {
489
+ return React__default.Children.map(children, function (child) {
490
+ return React__default.cloneElement(child, {
491
+ end: end,
492
+ vertical: vertical
493
+ });
494
+ });
495
+ }, [children, end, vertical]);
496
+ return React__default.createElement(reactBeautifulDnd.Droppable, {
497
+ droppableId: id,
498
+ direction: vertical ? 'vertical' : 'horizontal',
499
+ isDropDisabled: disabled
500
+ }, function (provided, snapshot) {
501
+ return React__default.createElement("div", Object.assign({
502
+ ref: provided.innerRef
503
+ }, provided.droppableProps, {
504
+ className: [className, 'area', stretch && 'stretch', end && 'end', align === 'centered' ? 'just-centered' : align === 'end' ? 'just-end' : 'start', enabled ? 'area-transition-in' : 'area-transition-out'].filter(Boolean).join(' '),
505
+ style: _extends({
506
+ flexDirection: vertical ? 'column' : 'row',
507
+ minHeight: !React__default.Children.count(children) && !enabled ? '0px' : '26px',
508
+ minWidth: !React__default.Children.count(children) && !enabled ? '0px' : '46px',
509
+ opacity: snapshot.isDraggingOver ? 0.8 : 1
510
+ }, enabled ? editorStyle : style)
511
+ }), childrenWithParentProps, provided.placeholder, React__default.createElement("div", {
512
+ style: buttonStyle
513
+ }, React__default.createElement("div", {
514
+ onClick: handleAlignChange,
515
+ style: {
516
+ cursor: 'pointer'
517
+ }
518
+ }, React__default.createElement(Icon, {
519
+ name: align === 'centered' ? vertical ? 'alignCenterV' : 'alignCenter' : align === 'end' ? vertical ? 'alignEndV' : 'alignEnd' : vertical ? 'alignStartV' : 'alignStart',
520
+ style: {
521
+ color: iconColor
522
+ }
523
+ }))));
524
+ });
525
+ }
526
+
418
527
  function GridItem(_ref) {
419
528
  var className = _ref.className,
420
529
  children = _ref.children,
421
530
  id = _ref.id,
422
531
  index = _ref.index,
423
- extendable = _ref.extendable,
424
- extended = _ref.extended,
425
- draggable = _ref.draggable,
426
- onReorder = _ref.onReorder,
427
- onMoveArea = _ref.onMoveArea,
532
+ _ref$extendable = _ref.extendable,
533
+ extendable = _ref$extendable === void 0 ? false : _ref$extendable,
534
+ _ref$extended = _ref.extended,
535
+ extended = _ref$extended === void 0 ? false : _ref$extended,
536
+ _ref$disabled = _ref.disabled,
537
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
428
538
  onExtend = _ref.onExtend,
429
- location = _ref.location,
430
- end = _ref.end,
431
- vertical = _ref.vertical,
432
- styles = _ref.styles,
433
- editorStyles = _ref.editorStyles,
539
+ style = _ref.style,
540
+ editorStyle = _ref.editorStyle,
434
541
  iconSize = _ref.iconSize,
435
542
  _ref$iconColor = _ref.iconColor,
436
- iconColor = _ref$iconColor === void 0 ? 'rgb(255, 255, 255)' : _ref$iconColor;
437
- var ref = React.useRef(null);
543
+ iconColor = _ref$iconColor === void 0 ? 'rgb(255, 255, 255)' : _ref$iconColor,
544
+ props = _objectWithoutPropertiesLoose(_ref, ["className", "children", "id", "index", "extendable", "extended", "disabled", "onExtend", "style", "editorStyle", "iconSize", "iconColor"]);
545
+
546
+ var end = props.end,
547
+ vertical = props.vertical;
438
548
 
439
- var _useEditorMode = useEditorMode(),
440
- enabled = _useEditorMode.enabled;
549
+ var _useAlignContext = useAlignContext(),
550
+ editing = _useAlignContext.editing,
551
+ isDragging = _useAlignContext.isDragging,
552
+ onExtend2 = _useAlignContext.onExtend;
441
553
 
442
554
  var _useState = React.useState(false),
443
555
  isHovered = _useState[0],
444
556
  setHovered = _useState[1];
445
557
 
446
- var dragIndexRef = React.useRef();
447
-
448
- var handleExtend = function handleExtend() {
449
- if (!extendable || !onExtend) return;
558
+ var handleExtend = React.useCallback(function () {
559
+ if (!extendable) return;
450
560
  setHovered(false);
451
- onExtend(id, !extended);
452
- }; // ***************************************
453
- // Drag n drop logic
454
-
455
-
456
- var _useDrop = reactDnd.useDrop({
457
- accept: [ItemType.ITEM, ItemType.GROUP],
458
- collect: function collect(monitor) {
459
- return {
460
- handlerId: monitor.getHandlerId()
461
- };
462
- },
463
- hover: function hover(item, monitor) {
464
- var _ref$current;
465
-
466
- if (!ref.current || !enabled || draggable) {
467
- return;
468
- }
469
-
470
- var dragIndex = item.index;
471
- var hoverIndex = index;
472
-
473
- if (dragIndex === hoverIndex) {
474
- return;
475
- }
476
-
477
- var hoverBoundingRect = (_ref$current = ref.current) == null ? void 0 : _ref$current.getBoundingClientRect();
478
- var hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;
479
- var hoverMiddleX = (hoverBoundingRect.right - hoverBoundingRect.left) / 2;
480
- var clientOffset = monitor.getClientOffset();
481
- if (!clientOffset) return;
482
- var hoverClientY = clientOffset.y - hoverBoundingRect.top;
483
- var hoverClientX = clientOffset.x - hoverBoundingRect.left;
484
-
485
- if (vertical) {
486
- if (dragIndex < hoverIndex && hoverClientY < hoverMiddleY) {
487
- return;
488
- }
489
-
490
- if (dragIndex > hoverIndex && hoverClientY > hoverMiddleY) {
491
- return;
492
- }
493
- } else {
494
- if (dragIndex < hoverIndex && hoverClientX < hoverMiddleX) {
495
- return;
496
- }
497
-
498
- if (dragIndex > hoverIndex && hoverClientX > hoverMiddleX) {
499
- return;
500
- }
501
- }
502
-
503
- dragIndexRef.current = dragIndex;
504
- },
505
- drop: function drop(item) {
506
- if (dragIndexRef.current !== undefined) {
507
- onReorder(item.id, location, dragIndexRef.current, index);
508
- dragIndexRef.current = undefined;
509
- }
510
- }
511
- }),
512
- handlerId = _useDrop[0].handlerId,
513
- drop = _useDrop[1];
514
-
515
- var _useDrag = reactDnd.useDrag({
516
- type: ItemType.ITEM,
517
- item: {
518
- id: id,
519
- index: index
520
- },
521
- canDrag: draggable != null ? draggable : enabled,
522
- end: function end(item, monitor) {
523
- var dropResults = monitor.getDropResult();
524
-
525
- if (dropResults && dropResults.location !== location) {
526
- onMoveArea(item.id, dropResults.location, location);
527
- }
528
- },
529
- collect: function collect(monitor) {
530
- return {
531
- isDragging: monitor.isDragging()
532
- };
533
- }
534
- }, [dragIndexRef]),
535
- isDragging = _useDrag[0].isDragging,
536
- drag = _useDrag[1],
537
- preview = _useDrag[2];
538
-
539
- preview(drop(ref)); // ***************************************
540
- // ***************************************
541
- // External styles for editorMode or the vanilla grid
542
-
543
- var stylesFromProps = enabled ? editorStyles : styles;
544
- var itemStyles = React.useMemo(function () {
545
- return {
546
- opacity: isDragging ? 0.5 : 1,
547
- minHeight: isHovered && enabled ? '40px' : undefined,
548
- width: !vertical && extended ? '100%' : undefined,
549
- minWidth: isHovered && enabled ? extendable ? '70px' : '30px' : undefined,
550
- height: vertical && extended ? '100%' : undefined
551
- };
552
- }, [isDragging, isHovered, enabled, vertical, extended, extendable]);
553
- var containerStyle = React.useMemo(function () {
554
- return {
555
- position: 'relative',
556
- display: 'inline-block',
557
- minHeight: isHovered && enabled ? '40px' : undefined,
558
- width: !vertical && extended ? '100%' : undefined,
559
- minWidth: isHovered && enabled ? extendable ? '70px' : '30px' : undefined,
560
- height: vertical && extended ? '100%' : undefined
561
- };
562
- }, [isHovered, enabled, vertical, extended, extendable]);
563
- var overlayStyles = {
564
- position: 'absolute',
565
- top: '0',
566
- left: '0',
567
- width: '100%',
568
- height: '100%',
569
- boxSizing: 'border-box',
570
- background: 'rgba(0,0,0,0.6)',
571
- borderRadius: '6px'
572
- };
561
+ onExtend == null ? void 0 : onExtend(!extended);
562
+ onExtend2 == null ? void 0 : onExtend2(id, !extended);
563
+ }, [extendable, onExtend, extended, onExtend2, id]);
573
564
  var buttonStyles = React.useMemo(function () {
574
565
  return {
575
- display: 'flex',
576
566
  alignItems: end ? 'end' : 'start',
577
- justifyContent: 'space-between',
578
- padding: '6px',
579
567
  "float": end ? 'right' : 'left'
580
568
  };
581
- }, [end]); // ***************************************
582
-
583
- var childrenWithParentProps = React__default.Children.map(children, function (child) {
584
- return React__default.cloneElement(child, {
585
- extended: extended
586
- });
587
- });
588
- return React__default.createElement("div", {
589
- id: id,
590
- ref: ref,
591
- "data-handler-id": handlerId,
592
- className: className + " item",
593
- style: _extends({}, itemStyles, stylesFromProps),
594
- onMouseEnter: function onMouseEnter() {
595
- return setHovered(true);
596
- },
597
- onMouseLeave: function onMouseLeave() {
598
- return setHovered(false);
599
- }
600
- }, React__default.createElement("div", {
601
- style: containerStyle
602
- }, (draggable != null ? draggable : enabled) && isHovered && React__default.createElement("div", {
603
- style: overlayStyles
604
- }, React__default.createElement("div", {
605
- style: buttonStyles
606
- }, React__default.createElement("div", {
607
- ref: drag
608
- }, React__default.createElement(Icon, {
609
- name: "moveArrows",
610
- size: iconSize,
611
- styles: {
612
- color: iconColor
613
- }
614
- })), extendable && React__default.createElement(Icon, {
615
- name: vertical ? 'verticalExtend' : 'horizontalExtend',
616
- size: iconSize,
617
- styles: {
618
- color: iconColor,
619
- marginLeft: '8px'
620
- },
621
- onClick: handleExtend
622
- }))), childrenWithParentProps));
623
- }
624
-
625
- function GridArea(_ref) {
626
- var className = _ref.className,
627
- vertical = _ref.vertical,
628
- reverse = _ref.reverse,
629
- stretch = _ref.stretch,
630
- end = _ref.end,
631
- droppable = _ref.droppable,
632
- align = _ref.align,
633
- onAlignChange = _ref.onAlignChange,
634
- location = _ref.location,
635
- children = _ref.children,
636
- styles = _ref.styles,
637
- editorStyles = _ref.editorStyles,
638
- _ref$iconColor = _ref.iconColor,
639
- iconColor = _ref$iconColor === void 0 ? '#FFFFFF' : _ref$iconColor;
640
-
641
- var _useEditorMode = useEditorMode(),
642
- enabled = _useEditorMode.enabled;
643
-
644
- var handleAlignChange = React.useCallback(function (align) {
645
- switch (align) {
646
- case 'start':
647
- onAlignChange == null ? void 0 : onAlignChange('centered');
648
- break;
649
-
650
- case 'centered':
651
- onAlignChange == null ? void 0 : onAlignChange('end');
652
- break;
653
-
654
- default:
655
- onAlignChange == null ? void 0 : onAlignChange('start');
656
- break;
657
- }
658
- }, [onAlignChange]); // ***************************************
659
- // Drop logic
660
-
661
- var _useDrop = reactDnd.useDrop(function () {
569
+ }, [end]);
570
+ var ctx = React.useMemo(function () {
662
571
  return {
663
- accept: [ItemType.ITEM, ItemType.GROUP],
664
- drop: function drop() {
665
- return {
666
- location: location
667
- };
572
+ id: id,
573
+ editing: editing,
574
+ isDragging: isDragging,
575
+ isHovered: isHovered,
576
+ extended: extended,
577
+ extendable: extendable,
578
+ disabled: disabled,
579
+ index: index
580
+ };
581
+ }, [disabled, editing, extendable, extended, id, index, isDragging, isHovered]);
582
+ return React__default.createElement(reactBeautifulDnd.Draggable, {
583
+ draggableId: id,
584
+ index: index,
585
+ isDragDisabled: disabled
586
+ }, function (provided, snapshot) {
587
+ return React__default.createElement("div", Object.assign({
588
+ ref: provided.innerRef
589
+ }, provided.draggableProps, {
590
+ className: className + " item",
591
+ style: _extends({
592
+ flex: extended && !snapshot.isDragging ? 'auto' : undefined,
593
+ opacity: snapshot.isDragging ? 0.5 : 1
594
+ }, editing ? editorStyle : style, provided.draggableProps.style),
595
+ onMouseEnter: function onMouseEnter() {
596
+ return setHovered(true);
668
597
  },
669
- collect: function collect(monitor) {
670
- return {
671
- isOver: monitor.isOver()
672
- };
598
+ onMouseLeave: function onMouseLeave() {
599
+ return setHovered(false);
673
600
  }
674
- };
675
- }),
676
- isOver = _useDrop[0].isOver,
677
- drop = _useDrop[1]; // ***************************************
678
- // ***************************************
679
- // Internal styles used
680
-
681
-
682
- var buttonStyle = React.useMemo(function () {
683
- return {
684
- position: 'absolute',
685
- left: vertical ? end ? 0 : undefined : '50%',
686
- right: vertical ? !end ? 0 : undefined : '50%',
687
- bottom: !vertical && !end ? 0 : vertical ? '50%' : undefined,
688
- top: vertical ? '50%' : end ? 0 : undefined,
689
- opacity: (droppable != null ? droppable : enabled) && align ? 1 : 0,
690
- transition: 'all 0.5s ease-in-out'
691
- };
692
- }, [vertical, end, droppable, enabled, align]);
693
- var mainStyles = React.useMemo(function () {
694
- return {
695
- opacity: isOver ? 0.8 : 1,
696
- minHeight: !React__default.Children.count(children) && !enabled ? '0px' : '26px',
697
- minWidth: !React__default.Children.count(children) && !enabled ? '0px' : '46px'
698
- };
699
- }, [isOver, children, enabled]);
700
- var stylesFromProps = enabled ? editorStyles : styles; // ***************************************
701
- // Rebuilds the GridItem children to receive their parent GridArea's 'end' and 'vertical' values.
702
- // Used to know where to align the overlay buttons (end) and how to extend the GridItems (vertical).
703
-
704
- var childrenWithParentProps = React__default.Children.map(children, function (child) {
705
- return React__default.cloneElement(child, {
706
- end: end,
707
- vertical: vertical,
708
- location: location
709
- });
601
+ }), React__default.createElement("div", {
602
+ style: {
603
+ width: '100%',
604
+ height: '100%',
605
+ pointerEvents: editing ? 'none' : undefined
606
+ }
607
+ }, typeof children === 'function' ? children(ctx) : children), React__default.createElement("div", {
608
+ className: "overlay",
609
+ style: {
610
+ display: !disabled && editing && isHovered && (snapshot.isDragging || !isDragging) ? 'block' : 'none'
611
+ }
612
+ }, React__default.createElement("div", {
613
+ className: "overlay-buttons",
614
+ style: buttonStyles
615
+ }, React__default.createElement("div", Object.assign({}, provided.dragHandleProps), React__default.createElement(Icon, {
616
+ name: "moveArrows",
617
+ size: iconSize,
618
+ style: {
619
+ color: iconColor
620
+ }
621
+ })), extendable && React__default.createElement("div", {
622
+ style: {
623
+ cursor: 'pointer',
624
+ marginLeft: '8px'
625
+ },
626
+ onClick: handleExtend
627
+ }, React__default.createElement(Icon, {
628
+ name: vertical ? 'verticalExtend' : 'horizontalExtend',
629
+ size: iconSize,
630
+ style: {
631
+ color: iconColor
632
+ }
633
+ })))));
710
634
  });
711
- return React__default.createElement("div", {
712
- ref: drop,
713
- className: "\n " + className + "\n area\n " + (stretch && 'stretch') + "\n " + (end && 'end') + "\n " + (align === 'centered' ? 'just-centered' : align === 'end' ? 'just-end' : 'start') + "\n " + (vertical ? reverse ? 'vertical-r' : 'vertical' : reverse ? 'horizontal-r' : 'horizontal') + "\n " + (enabled ? 'area-transition-in' : 'area-transition-out') + "\n ",
714
- style: _extends({}, mainStyles, stylesFromProps)
715
- }, childrenWithParentProps, React__default.createElement("div", {
716
- style: buttonStyle
717
- }, React__default.createElement(Icon, {
718
- name: align === 'centered' ? vertical ? 'alignCenterV' : 'alignCenter' : align === 'end' ? vertical ? 'alignEndV' : 'alignEnd' : vertical ? 'alignStartV' : 'alignStart',
719
- styles: {
720
- color: iconColor,
721
- cursor: (droppable != null ? droppable : enabled) && align && !!React__default.Children.count(children) ? 'pointer' : 'default'
722
- },
723
- onClick: (droppable != null ? droppable : enabled) && align && !!React__default.Children.count(children) ? function () {
724
- return handleAlignChange(align);
725
- } : undefined
726
- })));
727
635
  }
728
636
 
729
637
  exports.GridArea = GridArea;