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