react-align 1.1.7 → 2.0.3
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/README.md +30 -41
- package/dist/GridArea.d.ts +18 -0
- package/dist/GridItem.d.ts +27 -0
- package/dist/{Grid/GridSection/index.d.ts → GridSection.d.ts} +4 -3
- package/dist/GridWrapper.d.ts +17 -0
- package/dist/Icon/index.d.ts +1 -1
- package/dist/context.d.ts +11 -4
- package/dist/index.d.ts +5 -5
- package/dist/react-align.cjs.development.js +223 -317
- package/dist/react-align.cjs.development.js.map +1 -1
- package/dist/react-align.cjs.production.min.js +1 -1
- package/dist/react-align.cjs.production.min.js.map +1 -1
- package/dist/react-align.esm.js +224 -318
- package/dist/react-align.esm.js.map +1 -1
- package/package.json +4 -9
- package/src/GridArea.tsx +152 -0
- package/src/GridItem.tsx +153 -0
- package/src/GridSection.tsx +53 -0
- package/src/GridWrapper.tsx +87 -0
- package/src/Icon/index.tsx +3 -3
- package/src/context.tsx +8 -4
- package/src/grid.css +80 -0
- package/src/index.tsx +5 -5
- package/dist/Grid/GridArea/index.d.ts +0 -18
- package/dist/Grid/GridItem/index.d.ts +0 -25
- package/dist/Grid/GridWrapper/index.d.ts +0 -12
- package/src/Grid/GridArea/index.tsx +0 -180
- package/src/Grid/GridItem/index.tsx +0 -266
- package/src/Grid/GridSection/index.tsx +0 -46
- package/src/Grid/GridWrapper/index.tsx +0 -39
- package/src/Grid/grid.css +0 -78
- package/src/Grid/interfaces.ts +0 -5
- package/src/stories/GridArea.stories.tsx +0 -28
package/dist/react-align.esm.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import React__default, { useContext, createContext,
|
|
2
|
-
import {
|
|
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
|
|
7
|
-
|
|
5
|
+
var Context = /*#__PURE__*/createContext({
|
|
6
|
+
editing: false,
|
|
7
|
+
isDragging: false
|
|
8
8
|
});
|
|
9
|
-
var
|
|
10
|
-
return useContext(
|
|
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
|
|
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
|
-
|
|
45
|
+
editing = _ref.editing,
|
|
46
46
|
vertical = _ref.vertical,
|
|
47
47
|
stretch = _ref.stretch,
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
children = _ref.children
|
|
48
|
+
style = _ref.style,
|
|
49
|
+
editorStyle = _ref.editorStyle,
|
|
50
|
+
children = _ref.children,
|
|
51
|
+
onMove = _ref.onMove,
|
|
52
|
+
onAlignChange = _ref.onAlignChange,
|
|
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:
|
|
54
|
-
}, React__default.createElement(
|
|
55
|
-
|
|
56
|
-
|
|
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
|
-
|
|
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
|
-
|
|
88
|
-
|
|
122
|
+
style = _ref.style,
|
|
123
|
+
editorStyle = _ref.editorStyle,
|
|
89
124
|
children = _ref.children;
|
|
90
125
|
|
|
91
|
-
var
|
|
92
|
-
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
|
|
97
|
-
style: _extends({},
|
|
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,285 +428,42 @@ var Icon = function Icon(_ref) {
|
|
|
393
428
|
var className = _ref.className,
|
|
394
429
|
name = _ref.name,
|
|
395
430
|
size = _ref.size,
|
|
396
|
-
|
|
397
|
-
|
|
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:
|
|
437
|
+
style: style,
|
|
403
438
|
onClick: onClick
|
|
404
439
|
}));
|
|
405
440
|
};
|
|
406
441
|
|
|
407
|
-
var
|
|
408
|
-
ITEM: 'react-align_item',
|
|
409
|
-
GROUP: 'react-align_group'
|
|
410
|
-
};
|
|
411
|
-
function GridItem(_ref) {
|
|
412
|
-
var className = _ref.className,
|
|
413
|
-
children = _ref.children,
|
|
414
|
-
id = _ref.id,
|
|
415
|
-
index = _ref.index,
|
|
416
|
-
extendable = _ref.extendable,
|
|
417
|
-
extended = _ref.extended,
|
|
418
|
-
draggable = _ref.draggable,
|
|
419
|
-
onReorder = _ref.onReorder,
|
|
420
|
-
onMoveArea = _ref.onMoveArea,
|
|
421
|
-
onExtend = _ref.onExtend,
|
|
422
|
-
location = _ref.location,
|
|
423
|
-
end = _ref.end,
|
|
424
|
-
vertical = _ref.vertical,
|
|
425
|
-
styles = _ref.styles,
|
|
426
|
-
editorStyles = _ref.editorStyles,
|
|
427
|
-
iconSize = _ref.iconSize,
|
|
428
|
-
_ref$iconColor = _ref.iconColor,
|
|
429
|
-
iconColor = _ref$iconColor === void 0 ? 'rgb(255, 255, 255)' : _ref$iconColor;
|
|
430
|
-
var ref = useRef(null);
|
|
431
|
-
|
|
432
|
-
var _useEditorMode = useEditorMode(),
|
|
433
|
-
enabled = _useEditorMode.enabled;
|
|
434
|
-
|
|
435
|
-
var _useState = useState(false),
|
|
436
|
-
isHovered = _useState[0],
|
|
437
|
-
setHovered = _useState[1];
|
|
438
|
-
|
|
439
|
-
var dragIndexRef = useRef();
|
|
440
|
-
|
|
441
|
-
var handleExtend = function handleExtend() {
|
|
442
|
-
if (!extendable || !onExtend) return;
|
|
443
|
-
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 == null ? void 0 : 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 == null ? void 0 : 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
|
-
};
|
|
566
|
-
var buttonStyles = useMemo(function () {
|
|
567
|
-
return {
|
|
568
|
-
display: 'flex',
|
|
569
|
-
alignItems: end ? 'end' : 'start',
|
|
570
|
-
justifyContent: 'space-between',
|
|
571
|
-
padding: '6px',
|
|
572
|
-
"float": end ? 'right' : 'left'
|
|
573
|
-
};
|
|
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
|
-
|
|
442
|
+
var alignments = ['start', 'centered', 'end'];
|
|
618
443
|
function GridArea(_ref) {
|
|
619
|
-
var
|
|
444
|
+
var id = _ref.id,
|
|
445
|
+
className = _ref.className,
|
|
620
446
|
vertical = _ref.vertical,
|
|
621
|
-
reverse = _ref.reverse,
|
|
622
447
|
stretch = _ref.stretch,
|
|
623
448
|
end = _ref.end,
|
|
624
|
-
|
|
449
|
+
disabled = _ref.disabled,
|
|
625
450
|
align = _ref.align,
|
|
626
451
|
onAlignChange = _ref.onAlignChange,
|
|
627
|
-
location = _ref.location,
|
|
628
452
|
children = _ref.children,
|
|
629
|
-
|
|
630
|
-
|
|
453
|
+
style = _ref.style,
|
|
454
|
+
editorStyle = _ref.editorStyle,
|
|
631
455
|
_ref$iconColor = _ref.iconColor,
|
|
632
456
|
iconColor = _ref$iconColor === void 0 ? '#FFFFFF' : _ref$iconColor;
|
|
633
457
|
|
|
634
|
-
var
|
|
635
|
-
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 () {
|
|
655
|
-
return {
|
|
656
|
-
accept: [ItemType.ITEM, ItemType.GROUP],
|
|
657
|
-
drop: function drop() {
|
|
658
|
-
return {
|
|
659
|
-
location: location
|
|
660
|
-
};
|
|
661
|
-
},
|
|
662
|
-
collect: function collect(monitor) {
|
|
663
|
-
return {
|
|
664
|
-
isOver: monitor.isOver()
|
|
665
|
-
};
|
|
666
|
-
}
|
|
667
|
-
};
|
|
668
|
-
}),
|
|
669
|
-
isOver = _useDrop[0].isOver,
|
|
670
|
-
drop = _useDrop[1]; // ***************************************
|
|
671
|
-
// ***************************************
|
|
672
|
-
// Internal styles used
|
|
673
|
-
|
|
458
|
+
var _useAlignContext = useAlignContext(),
|
|
459
|
+
enabled = _useAlignContext.editing,
|
|
460
|
+
onAlignChange2 = _useAlignContext.onAlignChange;
|
|
674
461
|
|
|
462
|
+
var handleAlignChange = useCallback(function () {
|
|
463
|
+
var a = alignments[(align ? alignments.indexOf(align) + 1 : 0) % alignments.length];
|
|
464
|
+
onAlignChange == null ? void 0 : onAlignChange(a);
|
|
465
|
+
onAlignChange2 == null ? void 0 : onAlignChange2(id, a);
|
|
466
|
+
}, [align, onAlignChange, onAlignChange2, id]);
|
|
675
467
|
var buttonStyle = useMemo(function () {
|
|
676
468
|
return {
|
|
677
469
|
position: 'absolute',
|
|
@@ -679,44 +471,158 @@ function GridArea(_ref) {
|
|
|
679
471
|
right: vertical ? !end ? 0 : undefined : '50%',
|
|
680
472
|
bottom: !vertical && !end ? 0 : vertical ? '50%' : undefined,
|
|
681
473
|
top: vertical ? '50%' : end ? 0 : undefined,
|
|
682
|
-
opacity:
|
|
474
|
+
opacity: !disabled && enabled && align ? 1 : 0,
|
|
475
|
+
pointerEvents: !disabled && enabled && align ? 'auto' : 'none',
|
|
683
476
|
transition: 'all 0.5s ease-in-out'
|
|
684
477
|
};
|
|
685
|
-
}, [vertical, end,
|
|
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.
|
|
478
|
+
}, [vertical, end, disabled, enabled, align]); // Rebuilds the GridItem children to receive their parent GridArea's 'end' and 'vertical' values.
|
|
695
479
|
// Used to know where to align the overlay buttons (end) and how to extend the GridItems (vertical).
|
|
696
480
|
|
|
697
|
-
var childrenWithParentProps =
|
|
698
|
-
return React__default.
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
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
|
+
});
|
|
702
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
|
+
|
|
520
|
+
function GridItem(_ref) {
|
|
521
|
+
var className = _ref.className,
|
|
522
|
+
children = _ref.children,
|
|
523
|
+
id = _ref.id,
|
|
524
|
+
index = _ref.index,
|
|
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,
|
|
531
|
+
style = _ref.style,
|
|
532
|
+
editorStyle = _ref.editorStyle,
|
|
533
|
+
iconSize = _ref.iconSize,
|
|
534
|
+
_ref$iconColor = _ref.iconColor,
|
|
535
|
+
iconColor = _ref$iconColor === void 0 ? 'rgb(255, 255, 255)' : _ref$iconColor,
|
|
536
|
+
props = _objectWithoutPropertiesLoose(_ref, ["className", "children", "id", "index", "extendable", "extended", "disabled", "style", "editorStyle", "iconSize", "iconColor"]);
|
|
537
|
+
|
|
538
|
+
var end = props.end,
|
|
539
|
+
vertical = props.vertical;
|
|
540
|
+
|
|
541
|
+
var _useAlignContext = useAlignContext(),
|
|
542
|
+
editing = _useAlignContext.editing,
|
|
543
|
+
isDragging = _useAlignContext.isDragging,
|
|
544
|
+
onExtend = _useAlignContext.onExtend;
|
|
545
|
+
|
|
546
|
+
var _useState = useState(false),
|
|
547
|
+
isHovered = _useState[0],
|
|
548
|
+
setHovered = _useState[1];
|
|
549
|
+
|
|
550
|
+
var handleExtend = useCallback(function () {
|
|
551
|
+
if (!extendable) return;
|
|
552
|
+
setHovered(false);
|
|
553
|
+
onExtend == null ? void 0 : onExtend(id, !extended);
|
|
554
|
+
}, [extendable, onExtend, extended, id]);
|
|
555
|
+
var buttonStyles = useMemo(function () {
|
|
556
|
+
return {
|
|
557
|
+
alignItems: end ? 'end' : 'start',
|
|
558
|
+
"float": end ? 'right' : 'left'
|
|
559
|
+
};
|
|
560
|
+
}, [end]);
|
|
561
|
+
var ctx = useMemo(function () {
|
|
562
|
+
return {
|
|
563
|
+
id: id,
|
|
564
|
+
editing: editing,
|
|
565
|
+
isDragging: isDragging,
|
|
566
|
+
isHovered: isHovered,
|
|
567
|
+
extended: extended,
|
|
568
|
+
extendable: extendable,
|
|
569
|
+
disabled: disabled,
|
|
570
|
+
index: index
|
|
571
|
+
};
|
|
572
|
+
}, [disabled, editing, extendable, extended, id, index, isDragging, isHovered]);
|
|
573
|
+
return React__default.createElement(Draggable, {
|
|
574
|
+
draggableId: id,
|
|
575
|
+
index: index,
|
|
576
|
+
isDragDisabled: disabled
|
|
577
|
+
}, function (provided, snapshot) {
|
|
578
|
+
return React__default.createElement("div", Object.assign({
|
|
579
|
+
ref: provided.innerRef
|
|
580
|
+
}, provided.draggableProps, {
|
|
581
|
+
className: className + " item",
|
|
582
|
+
style: _extends({
|
|
583
|
+
flex: extended && !snapshot.isDragging ? 'auto' : undefined,
|
|
584
|
+
opacity: snapshot.isDragging ? 0.5 : 1
|
|
585
|
+
}, editing ? editorStyle : style, provided.draggableProps.style),
|
|
586
|
+
onMouseEnter: function onMouseEnter() {
|
|
587
|
+
return setHovered(true);
|
|
588
|
+
},
|
|
589
|
+
onMouseLeave: function onMouseLeave() {
|
|
590
|
+
return setHovered(false);
|
|
591
|
+
}
|
|
592
|
+
}), React__default.createElement("div", {
|
|
593
|
+
style: {
|
|
594
|
+
width: '100%',
|
|
595
|
+
height: '100%',
|
|
596
|
+
pointerEvents: editing ? 'none' : undefined
|
|
597
|
+
}
|
|
598
|
+
}, typeof children === 'function' ? children(ctx) : children), React__default.createElement("div", {
|
|
599
|
+
className: "overlay",
|
|
600
|
+
style: {
|
|
601
|
+
display: !disabled && editing && isHovered && (snapshot.isDragging || !isDragging) ? 'block' : 'none'
|
|
602
|
+
}
|
|
603
|
+
}, React__default.createElement("div", {
|
|
604
|
+
className: "overlay-buttons",
|
|
605
|
+
style: buttonStyles
|
|
606
|
+
}, React__default.createElement("div", Object.assign({}, provided.dragHandleProps), React__default.createElement(Icon, {
|
|
607
|
+
name: "moveArrows",
|
|
608
|
+
size: iconSize,
|
|
609
|
+
style: {
|
|
610
|
+
color: iconColor
|
|
611
|
+
}
|
|
612
|
+
})), extendable && React__default.createElement("div", {
|
|
613
|
+
style: {
|
|
614
|
+
cursor: 'pointer',
|
|
615
|
+
marginLeft: '8px'
|
|
616
|
+
},
|
|
617
|
+
onClick: handleExtend
|
|
618
|
+
}, React__default.createElement(Icon, {
|
|
619
|
+
name: vertical ? 'verticalExtend' : 'horizontalExtend',
|
|
620
|
+
size: iconSize,
|
|
621
|
+
style: {
|
|
622
|
+
color: iconColor
|
|
623
|
+
}
|
|
624
|
+
})))));
|
|
703
625
|
});
|
|
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
626
|
}
|
|
721
627
|
|
|
722
628
|
export { GridArea, GridItem, GridSection, GridWrapper, Icon };
|