publ-echo-test 0.0.332 → 0.0.334
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/dist/external-lib/classnames/index.d.ts +5 -0
- package/dist/external-lib/classnames/index.js +60 -0
- package/dist/external-lib/lodash.isEqual/index.d.ts +30 -0
- package/dist/external-lib/lodash.isEqual/index.js +1661 -0
- package/dist/lib/Draggable/Draggable.d.ts +17 -0
- package/dist/lib/Draggable/Draggable.js +192 -0
- package/dist/lib/Draggable/DraggableCore.d.ts +5 -0
- package/dist/lib/Draggable/DraggableCore.js +267 -0
- package/dist/lib/Draggable/constants.d.ts +12 -0
- package/dist/lib/Draggable/constants.js +12 -0
- package/dist/lib/Draggable/index.d.ts +2 -0
- package/dist/lib/Draggable/index.js +2 -0
- package/dist/lib/Draggable/types.d.ts +55 -0
- package/dist/lib/Draggable/types.js +1 -0
- package/dist/lib/Draggable/utils/domHelpers.d.ts +22 -0
- package/dist/lib/Draggable/utils/domHelpers.js +222 -0
- package/dist/lib/Draggable/utils/getPrefix.d.ts +5 -0
- package/dist/lib/Draggable/utils/getPrefix.js +41 -0
- package/dist/lib/Draggable/utils/positionHelpers.d.ts +7 -0
- package/dist/lib/Draggable/utils/positionHelpers.js +32 -0
- package/dist/lib/Draggable/utils/types.d.ts +30 -0
- package/dist/lib/Draggable/utils/types.js +1 -0
- package/dist/lib/Draggable/utils/validationHelpers.d.ts +4 -0
- package/dist/lib/Draggable/utils/validationHelpers.js +16 -0
- package/dist/lib/GridItem/GridItem.d.ts +5 -0
- package/dist/lib/GridItem/GridItem.js +417 -0
- package/dist/lib/GridItem/GroupItem.d.ts +10 -0
- package/dist/lib/GridItem/GroupItem.js +473 -0
- package/dist/lib/GridItem/OutsideClickHandler.d.ts +7 -0
- package/dist/lib/GridItem/OutsideClickHandler.js +112 -0
- package/dist/lib/GridItem/index.d.ts +1 -0
- package/dist/lib/GridItem/index.js +1 -0
- package/dist/lib/GridItem/types.d.ts +112 -0
- package/dist/lib/GridItem/types.js +1 -0
- package/dist/lib/GridItem/utils/calculateUtils.d.ts +30 -0
- package/dist/lib/GridItem/utils/calculateUtils.js +115 -0
- package/dist/lib/GridLayoutEditor/ReactGridLayout.d.ts +6 -0
- package/dist/lib/GridLayoutEditor/ReactGridLayout.js +747 -0
- package/dist/lib/GridLayoutEditor/ResponsiveGridLayout.d.ts +4 -0
- package/dist/lib/GridLayoutEditor/ResponsiveGridLayout.js +117 -0
- package/dist/lib/GridLayoutEditor/group.d.ts +58 -0
- package/dist/lib/GridLayoutEditor/group.js +341 -0
- package/dist/lib/GridLayoutEditor/index.d.ts +3 -0
- package/dist/lib/GridLayoutEditor/index.js +2 -0
- package/dist/lib/GridLayoutEditor/types.d.ts +170 -0
- package/dist/lib/GridLayoutEditor/types.js +1 -0
- package/dist/lib/GridLayoutEditor/utils/renderHelpers.d.ts +173 -0
- package/dist/lib/GridLayoutEditor/utils/renderHelpers.js +607 -0
- package/dist/lib/GridLayoutEditor/utils/responsiveUtils.d.ts +26 -0
- package/dist/lib/GridLayoutEditor/utils/responsiveUtils.js +77 -0
- package/dist/lib/Resizable/Resizable.d.ts +6 -0
- package/dist/lib/Resizable/Resizable.js +289 -0
- package/dist/lib/Resizable/ResizableBox.d.ts +7 -0
- package/dist/lib/Resizable/ResizableBox.js +57 -0
- package/dist/lib/Resizable/index.d.ts +1 -0
- package/dist/lib/Resizable/index.js +1 -0
- package/dist/lib/Resizable/types.d.ts +69 -0
- package/dist/lib/Resizable/types.js +1 -0
- package/dist/lib/Resizable/utils/cloneElement.d.ts +2 -0
- package/dist/lib/Resizable/utils/cloneElement.js +21 -0
- package/dist/lib/components/WidthProvider.d.ts +9 -0
- package/dist/lib/components/WidthProvider.js +65 -0
- package/dist/lib/components/index.d.ts +1 -0
- package/dist/lib/components/index.js +1 -0
- package/dist/lib/components/types.d.ts +13 -0
- package/dist/lib/components/types.js +1 -0
- package/dist/lib/index.d.ts +5 -0
- package/dist/lib/index.js +5 -0
- package/dist/lib/types.d.ts +4 -0
- package/dist/lib/types.js +1 -0
- package/dist/lib/utils/classNames.d.ts +3 -0
- package/dist/lib/utils/classNames.js +10 -0
- package/package.json +1 -1
@@ -0,0 +1,77 @@
|
|
1
|
+
import { cloneLayout, compact, correctBounds } from "./renderHelpers";
|
2
|
+
/**
|
3
|
+
* Given a width, find the highest breakpoint that matches is valid for it (width > breakpoint).
|
4
|
+
*
|
5
|
+
* @param {Object} breakpoints Breakpoints object (e.g. {lg: 1200, md: 960, ...})
|
6
|
+
* @param {Number} width Screen width.
|
7
|
+
*/
|
8
|
+
export function getBreakpointFromWidth(breakpoints, width) {
|
9
|
+
var sorted = sortBreakpoints(breakpoints);
|
10
|
+
var matching = sorted[0];
|
11
|
+
for (var i = 1, len = sorted.length; i < len; i++) {
|
12
|
+
var breakpointName = sorted[i];
|
13
|
+
if (width > breakpoints[breakpointName])
|
14
|
+
matching = breakpointName;
|
15
|
+
}
|
16
|
+
return matching;
|
17
|
+
}
|
18
|
+
/**
|
19
|
+
* Given a breakpoint, get the # of cols set for it.
|
20
|
+
*/
|
21
|
+
export function getColsFromBreakpoint(breakpoint, cols) {
|
22
|
+
if (!cols[breakpoint]) {
|
23
|
+
throw new Error("ResponsiveGridLayout: `cols` entry for breakpoint " +
|
24
|
+
breakpoint +
|
25
|
+
" is missing!");
|
26
|
+
}
|
27
|
+
return cols[breakpoint];
|
28
|
+
}
|
29
|
+
/**
|
30
|
+
* Given existing layouts and a new breakpoint, find or generate a new layout.
|
31
|
+
*
|
32
|
+
* This finds the layout above the new one and generates from it, if it exists.
|
33
|
+
*/
|
34
|
+
export function findOrGenerateResponsiveLayout(layouts, breakpoints, breakpoint, lastBreakpoint, cols, compactType, overlap) {
|
35
|
+
// If it already exists, just return it.
|
36
|
+
if (layouts[breakpoint]) {
|
37
|
+
return cloneLayout(layouts[breakpoint]);
|
38
|
+
}
|
39
|
+
// Find or generate the next layout
|
40
|
+
var layout = layouts[lastBreakpoint];
|
41
|
+
var breakpointsSorted = sortBreakpoints(breakpoints);
|
42
|
+
// Above?
|
43
|
+
for (var i = breakpointsSorted.indexOf(breakpoint); i < breakpointsSorted.length; i++) {
|
44
|
+
var b = breakpointsSorted[i];
|
45
|
+
if (layouts[b]) {
|
46
|
+
layout = layouts[b];
|
47
|
+
break;
|
48
|
+
}
|
49
|
+
}
|
50
|
+
if (!layout) {
|
51
|
+
// below?
|
52
|
+
for (var i = breakpointsSorted.indexOf(breakpoint) - 1; i >= 0; i--) {
|
53
|
+
var b = breakpointsSorted[i];
|
54
|
+
if (layouts[b]) {
|
55
|
+
layout = layouts[b];
|
56
|
+
break;
|
57
|
+
}
|
58
|
+
}
|
59
|
+
}
|
60
|
+
layout = cloneLayout(layout || []); // clone layout so we don't modify existing items
|
61
|
+
return overlap
|
62
|
+
? layout
|
63
|
+
: compact(correctBounds(layout, { cols: cols }), compactType, cols);
|
64
|
+
}
|
65
|
+
/**
|
66
|
+
* Given breakpoints, return an array of breakpoints sorted by width. This is usually
|
67
|
+
* e.g. ['xxs', 'xs', 'sm', ...]
|
68
|
+
*
|
69
|
+
* @param {Object} breakpoints Key/value pair of breakpoint names to widths.
|
70
|
+
* @return {Array} Sorted breakpoints.
|
71
|
+
*/
|
72
|
+
export function sortBreakpoints(breakpoints) {
|
73
|
+
var keys = Object.keys(breakpoints);
|
74
|
+
return keys.sort(function (a, b) {
|
75
|
+
return breakpoints[a] - breakpoints[b];
|
76
|
+
});
|
77
|
+
}
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { PropsWithChildren } from '../Draggable/types';
|
3
|
+
import { ResizableProps } from './types';
|
4
|
+
type Props = ResizableProps;
|
5
|
+
declare const Resizable: ({ children, axis, handleSize, lockAspectRatio, minConstraints, maxConstraints, resizeHandles, transformScale, isResizing, autoResize, colWidth, margin, ...props }: PropsWithChildren<Props>) => React.ReactElement<any, string | React.JSXElementConstructor<any>>;
|
6
|
+
export default Resizable;
|
@@ -0,0 +1,289 @@
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
2
|
+
__assign = Object.assign || function(t) {
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
4
|
+
s = arguments[i];
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
6
|
+
t[p] = s[p];
|
7
|
+
}
|
8
|
+
return t;
|
9
|
+
};
|
10
|
+
return __assign.apply(this, arguments);
|
11
|
+
};
|
12
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
13
|
+
var t = {};
|
14
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
15
|
+
t[p] = s[p];
|
16
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
17
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
18
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
19
|
+
t[p[i]] = s[p[i]];
|
20
|
+
}
|
21
|
+
return t;
|
22
|
+
};
|
23
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
24
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
25
|
+
if (ar || !(i in from)) {
|
26
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
27
|
+
ar[i] = from[i];
|
28
|
+
}
|
29
|
+
}
|
30
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
31
|
+
};
|
32
|
+
import { createElement as _createElement } from "react";
|
33
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
34
|
+
import React, { useEffect, useRef, } from 'react';
|
35
|
+
import { cloneElement } from './utils/cloneElement';
|
36
|
+
import { DraggableCore } from '../Draggable';
|
37
|
+
import classNames from '../../external-lib/classnames';
|
38
|
+
var Resizable = function (_a) {
|
39
|
+
var children = _a.children, _b = _a.axis, axis = _b === void 0 ? 'both' : _b, _c = _a.handleSize, handleSize = _c === void 0 ? [20, 20] : _c, _d = _a.lockAspectRatio, lockAspectRatio = _d === void 0 ? false : _d, _e = _a.minConstraints, minConstraints = _e === void 0 ? [20, 20] : _e, _f = _a.maxConstraints, maxConstraints = _f === void 0 ? [Infinity, Infinity] : _f, _g = _a.resizeHandles, resizeHandles = _g === void 0 ? ['se'] : _g, _h = _a.transformScale, transformScale = _h === void 0 ? 1 : _h, isResizing = _a.isResizing, autoResize = _a.autoResize, colWidth = _a.colWidth, margin = _a.margin, props = __rest(_a, ["children", "axis", "handleSize", "lockAspectRatio", "minConstraints", "maxConstraints", "resizeHandles", "transformScale", "isResizing", "autoResize", "colWidth", "margin"]);
|
40
|
+
var handleRefs = useRef({
|
41
|
+
s: useRef(null),
|
42
|
+
n: useRef(null),
|
43
|
+
e: useRef(null),
|
44
|
+
w: useRef(null),
|
45
|
+
se: useRef(null),
|
46
|
+
sw: useRef(null),
|
47
|
+
ne: useRef(null),
|
48
|
+
nw: useRef(null),
|
49
|
+
});
|
50
|
+
var startPosition = useRef(null);
|
51
|
+
var startSize = useRef(null);
|
52
|
+
var lastHandleRectRef = useRef(null);
|
53
|
+
var slack = useRef(null);
|
54
|
+
var className = props.className, draggableOpts = props.draggableOpts, width = props.width, height = props.height, handle = props.handle, onResize = props.onResize, onResizeStop = props.onResizeStop, onResizeStart = props.onResizeStart, restProps = __rest(props, ["className", "draggableOpts", "width", "height", "handle", "onResize", "onResizeStop", "onResizeStart"]);
|
55
|
+
var elementRef = children.ref;
|
56
|
+
var extendedHeightRef = useRef(null);
|
57
|
+
var shouldShrinkRef = useRef(false);
|
58
|
+
var minWidth = useRef(0);
|
59
|
+
var minHeight = useRef(0);
|
60
|
+
useEffect(function () {
|
61
|
+
var _a;
|
62
|
+
if (!autoResize) {
|
63
|
+
return;
|
64
|
+
}
|
65
|
+
if (!isResizing) {
|
66
|
+
extendedHeightRef.current = null;
|
67
|
+
minWidth.current = 0;
|
68
|
+
shouldShrinkRef.current = false;
|
69
|
+
return;
|
70
|
+
}
|
71
|
+
if (!elementRef.current) {
|
72
|
+
return;
|
73
|
+
}
|
74
|
+
var placeholder = document.querySelector('.placeholder');
|
75
|
+
if (!placeholder) {
|
76
|
+
return;
|
77
|
+
}
|
78
|
+
var target = (_a = placeholder.children[0].children[0].children[0]) !== null && _a !== void 0 ? _a : placeholder.children[0].children[0];
|
79
|
+
if (target.clientHeight) {
|
80
|
+
minHeight.current = target.clientHeight;
|
81
|
+
}
|
82
|
+
// target.clientHeight -> 실제 "노드"의 height. (gridItem아닌)
|
83
|
+
if (target.clientHeight > elementRef.current.clientHeight) {
|
84
|
+
extendedHeightRef.current = target.clientHeight;
|
85
|
+
shouldShrinkRef.current = true;
|
86
|
+
}
|
87
|
+
else {
|
88
|
+
extendedHeightRef.current = null;
|
89
|
+
}
|
90
|
+
if (shouldShrinkRef.current &&
|
91
|
+
target.clientHeight < elementRef.current.clientHeight) {
|
92
|
+
minHeight.current = target.clientHeight;
|
93
|
+
}
|
94
|
+
var minWidthStyle = target.computedStyleMap().get('min-width');
|
95
|
+
if (typeof minWidthStyle.value === 'number' && margin && colWidth) {
|
96
|
+
var minWidthBase = minWidthStyle.value;
|
97
|
+
var minColWidth = (minWidthBase + margin[0]) / (colWidth + margin[0]);
|
98
|
+
var minW = Math.ceil(minColWidth);
|
99
|
+
var minWidthPx = minW * colWidth + (minW - 1) * margin[0];
|
100
|
+
minWidth.current = Math.round(minWidthPx);
|
101
|
+
}
|
102
|
+
}, [isResizing, autoResize, children, elementRef]);
|
103
|
+
var resetData = function () {
|
104
|
+
lastHandleRectRef.current = null;
|
105
|
+
slack.current = null;
|
106
|
+
};
|
107
|
+
// NOTE - 최소 또는 최대 제약 조건 width와 height 계산, 비율 고정 계산
|
108
|
+
var checkConstraints = function (width, height) {
|
109
|
+
var _a;
|
110
|
+
if (!minConstraints && !maxConstraints && !lockAspectRatio) {
|
111
|
+
return [width, height];
|
112
|
+
}
|
113
|
+
if (lockAspectRatio) {
|
114
|
+
var ratio = props.width / props.height;
|
115
|
+
var deltaWidth = width - props.width;
|
116
|
+
var deltaHeight = height - props.height;
|
117
|
+
if (Math.abs(deltaWidth) > Math.abs(deltaHeight * ratio)) {
|
118
|
+
height = width / ratio;
|
119
|
+
}
|
120
|
+
else {
|
121
|
+
width = height * ratio;
|
122
|
+
}
|
123
|
+
}
|
124
|
+
var _b = [width, height], oldW = _b[0], oldH = _b[1];
|
125
|
+
var _c = (_a = slack.current) !== null && _a !== void 0 ? _a : [0, 0], slackW = _c[0], slackH = _c[1];
|
126
|
+
width += slackW;
|
127
|
+
height += slackH;
|
128
|
+
if (autoResize) {
|
129
|
+
width = Math.max(minWidth.current, width);
|
130
|
+
height = Math.max(minHeight.current, height);
|
131
|
+
}
|
132
|
+
else {
|
133
|
+
if (minConstraints) {
|
134
|
+
width = Math.max(minConstraints[0], width);
|
135
|
+
height = Math.max(minConstraints[1], height);
|
136
|
+
}
|
137
|
+
}
|
138
|
+
if (shouldShrinkRef.current) {
|
139
|
+
height = minHeight.current;
|
140
|
+
}
|
141
|
+
if (maxConstraints) {
|
142
|
+
width = Math.min(maxConstraints[0], width);
|
143
|
+
height = Math.min(maxConstraints[1], height);
|
144
|
+
}
|
145
|
+
slack.current = [slackW + (oldW - width), slackH + (oldH - height)];
|
146
|
+
return [width, height];
|
147
|
+
};
|
148
|
+
var checkTopLeft = function (deltaX, deltaY, top, left, width, height, handleAxis) {
|
149
|
+
var newTop = top;
|
150
|
+
var newLeft = left;
|
151
|
+
if (!startPosition.current || !startSize.current)
|
152
|
+
return [newTop, newLeft];
|
153
|
+
var currentSumOfLeftAndWidth = left + width;
|
154
|
+
var startSumOfLeftAndWidth = startPosition.current.left + startSize.current.width;
|
155
|
+
var currentSumOfTopAndHeight = top + height;
|
156
|
+
var startSumOfTopAndHeight = startPosition.current.top + startSize.current.height;
|
157
|
+
var resizableLeft = startPosition.current.left + (startSize.current.width - width);
|
158
|
+
var resizableTop = startPosition.current.top + (startSize.current.height - height);
|
159
|
+
if (deltaX < 0) {
|
160
|
+
if (handleAxis === 'nw' || handleAxis === 'w' || handleAxis === 'sw') {
|
161
|
+
if (currentSumOfLeftAndWidth > startSumOfLeftAndWidth) {
|
162
|
+
newLeft = Math.min(left, resizableLeft);
|
163
|
+
}
|
164
|
+
}
|
165
|
+
}
|
166
|
+
if (deltaY < 0) {
|
167
|
+
if (handleAxis === 'nw' || handleAxis === 'n' || handleAxis === 'ne') {
|
168
|
+
if (currentSumOfTopAndHeight > startSumOfTopAndHeight) {
|
169
|
+
newTop = Math.min(top, resizableTop);
|
170
|
+
}
|
171
|
+
}
|
172
|
+
}
|
173
|
+
if (deltaX > 0) {
|
174
|
+
if (handleAxis === 'nw' || handleAxis === 'w' || handleAxis === 'sw') {
|
175
|
+
if (width >= minConstraints[0]) {
|
176
|
+
newLeft = Math.max(left, resizableLeft);
|
177
|
+
}
|
178
|
+
}
|
179
|
+
}
|
180
|
+
if (deltaY > 0) {
|
181
|
+
if (handleAxis === 'nw' || handleAxis === 'n' || handleAxis === 'ne') {
|
182
|
+
if (height >= minConstraints[1]) {
|
183
|
+
newTop = Math.max(top, resizableTop);
|
184
|
+
}
|
185
|
+
}
|
186
|
+
}
|
187
|
+
return [newTop, newLeft];
|
188
|
+
};
|
189
|
+
var resizeHandler = function (handlerName, handleAxis) {
|
190
|
+
return function (e, _a) {
|
191
|
+
var _b, _c;
|
192
|
+
var _d, _e, _f, _g, _h, _j;
|
193
|
+
var node = _a.node, deltaX = _a.deltaX, deltaY = _a.deltaY;
|
194
|
+
if (handlerName === 'onResizeStart') {
|
195
|
+
var position = { top: (_d = props.top) !== null && _d !== void 0 ? _d : 0, left: (_e = props.left) !== null && _e !== void 0 ? _e : 0 };
|
196
|
+
startPosition.current = position;
|
197
|
+
startSize.current = {
|
198
|
+
width: (_f = props.width) !== null && _f !== void 0 ? _f : 0,
|
199
|
+
height: (_g = props.height) !== null && _g !== void 0 ? _g : 0,
|
200
|
+
};
|
201
|
+
resetData();
|
202
|
+
}
|
203
|
+
var canDragX = (axis === 'both' || axis === 'x') &&
|
204
|
+
handleAxis !== 'n' &&
|
205
|
+
handleAxis !== 's';
|
206
|
+
var canDragY = (axis === 'both' || axis === 'y') &&
|
207
|
+
handleAxis !== 'e' &&
|
208
|
+
handleAxis !== 'w';
|
209
|
+
if (!canDragX && !canDragY)
|
210
|
+
return;
|
211
|
+
var axisV = handleAxis[0];
|
212
|
+
var axisH = handleAxis[handleAxis.length - 1];
|
213
|
+
var handleRect = node.getBoundingClientRect();
|
214
|
+
// if (lastHandleRectRef.current !== null) {
|
215
|
+
// if (axisH === "w") {
|
216
|
+
// const deltaLeftSinceLast = handleRect.left - lastHandleRectRef.current.left;
|
217
|
+
// console.log('delta, :', deltaLeftSinceLast);
|
218
|
+
// deltaX += deltaLeftSinceLast;
|
219
|
+
// }
|
220
|
+
// if (axisV === "n") {
|
221
|
+
// const deltaTopSinceLast = handleRect.top - lastHandleRectRef.current.top;
|
222
|
+
// deltaY += deltaTopSinceLast;
|
223
|
+
// }
|
224
|
+
// }
|
225
|
+
lastHandleRectRef.current = handleRect;
|
226
|
+
if (axisH === 'w') {
|
227
|
+
deltaX = -deltaX;
|
228
|
+
}
|
229
|
+
if (axisV === 'n') {
|
230
|
+
deltaY = -deltaY;
|
231
|
+
}
|
232
|
+
var width = props.width + (canDragX ? deltaX / transformScale : 0);
|
233
|
+
var height = props.height + (canDragY ? deltaY / transformScale : 0);
|
234
|
+
var left = (_h = props === null || props === void 0 ? void 0 : props.left) !== null && _h !== void 0 ? _h : 0;
|
235
|
+
var top = (_j = props === null || props === void 0 ? void 0 : props.top) !== null && _j !== void 0 ? _j : 0;
|
236
|
+
if (axisV === 'n') {
|
237
|
+
top = top - deltaY;
|
238
|
+
}
|
239
|
+
if (axisH === 'w') {
|
240
|
+
left = left - deltaX;
|
241
|
+
}
|
242
|
+
_b = checkConstraints(width, height), width = _b[0], height = _b[1];
|
243
|
+
if (autoResize && minHeight.current === height) {
|
244
|
+
handleAxis = removeNorthHandle(handleAxis);
|
245
|
+
}
|
246
|
+
_c = checkTopLeft(deltaX, deltaY, top, left, width, height, handleAxis), top = _c[0], left = _c[1];
|
247
|
+
var isDimensionsChanged = width !== props.width || height !== props.height;
|
248
|
+
var cb = typeof props[handlerName] === 'function' ? props[handlerName] : null;
|
249
|
+
var isCbSkipped = handlerName === 'onResize' && !isDimensionsChanged;
|
250
|
+
if (cb && !isCbSkipped) {
|
251
|
+
cb(e, { node: node, size: { width: width, height: height, top: top, left: left }, handle: handleAxis });
|
252
|
+
}
|
253
|
+
if (handlerName === 'onResizeStop') {
|
254
|
+
startPosition.current = null;
|
255
|
+
startSize.current = null;
|
256
|
+
resetData();
|
257
|
+
}
|
258
|
+
};
|
259
|
+
};
|
260
|
+
var renderResizeHandle = function (handleAxis, ref) {
|
261
|
+
if (!handle) {
|
262
|
+
return (_jsx("span", { className: "react-resizable-handle react-resizable-handle-".concat(handleAxis), ref: ref }));
|
263
|
+
}
|
264
|
+
if (typeof handle === 'function') {
|
265
|
+
return handle(handleAxis, ref);
|
266
|
+
}
|
267
|
+
var isDOMElement = typeof handle.type === 'string';
|
268
|
+
var props = __assign({ ref: ref }, (isDOMElement ? {} : { handleAxis: handleAxis }));
|
269
|
+
return React.cloneElement(handle, props);
|
270
|
+
};
|
271
|
+
return cloneElement(children, __assign(__assign({}, restProps), { className: classNames(className !== null && className !== void 0 ? className : 'react-resizable'), children: __spreadArray([
|
272
|
+
// ...children.props.children,
|
273
|
+
React.Children.map(children.props.children, function (child) { return child; })
|
274
|
+
], resizeHandles.map(function (handleAxis) {
|
275
|
+
var ref = (handleRefs === null || handleRefs === void 0 ? void 0 : handleRefs.current) && handleRefs.current[handleAxis];
|
276
|
+
return (_createElement(DraggableCore, __assign({}, draggableOpts, { nodeRef: ref, key: "resizableHandle-".concat(handleAxis), onStop: resizeHandler('onResizeStop', handleAxis), onStart: resizeHandler('onResizeStart', handleAxis), onDrag: resizeHandler('onResize', handleAxis) }), renderResizeHandle(handleAxis, ref)));
|
277
|
+
}), true) }));
|
278
|
+
};
|
279
|
+
function removeNorthHandle(axis) {
|
280
|
+
switch (axis) {
|
281
|
+
case 'ne':
|
282
|
+
return 'e';
|
283
|
+
case 'nw':
|
284
|
+
return 'w';
|
285
|
+
default:
|
286
|
+
return axis;
|
287
|
+
}
|
288
|
+
}
|
289
|
+
export default Resizable;
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import { ResizableProps } from "./types";
|
2
|
+
import { PropsWithChildren } from "../Draggable/types";
|
3
|
+
type ResizableBoxProps = ResizableProps & {
|
4
|
+
style?: Object;
|
5
|
+
};
|
6
|
+
declare const ResizableBox: ({ children, ...props }: PropsWithChildren<ResizableBoxProps>) => React.ReactElement;
|
7
|
+
export default ResizableBox;
|
@@ -0,0 +1,57 @@
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
2
|
+
__assign = Object.assign || function(t) {
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
4
|
+
s = arguments[i];
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
6
|
+
t[p] = s[p];
|
7
|
+
}
|
8
|
+
return t;
|
9
|
+
};
|
10
|
+
return __assign.apply(this, arguments);
|
11
|
+
};
|
12
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
13
|
+
var t = {};
|
14
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
15
|
+
t[p] = s[p];
|
16
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
17
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
18
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
19
|
+
t[p[i]] = s[p[i]];
|
20
|
+
}
|
21
|
+
return t;
|
22
|
+
};
|
23
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
24
|
+
import { useState } from "react";
|
25
|
+
import Resizable from "./Resizable";
|
26
|
+
var ResizableBox = function (_a) {
|
27
|
+
var children = _a.children, props = __rest(_a, ["children"]);
|
28
|
+
var handle = props.handle, handleSize = props.handleSize, onResize = props.onResize, onResizeStart = props.onResizeStart, onResizeStop = props.onResizeStop, draggableOpts = props.draggableOpts, minConstraints = props.minConstraints, maxConstraints = props.maxConstraints, lockAspectRatio = props.lockAspectRatio, axis = props.axis, width = props.width, height = props.height, resizeHandles = props.resizeHandles, style = props.style, transformScale = props.transformScale, restProps = __rest(props, ["handle", "handleSize", "onResize", "onResizeStart", "onResizeStop", "draggableOpts", "minConstraints", "maxConstraints", "lockAspectRatio", "axis", "width", "height", "resizeHandles", "style", "transformScale"]);
|
29
|
+
var _b = useState({
|
30
|
+
width: width,
|
31
|
+
height: height,
|
32
|
+
propsWidth: width,
|
33
|
+
propsHeight: height,
|
34
|
+
}), resizableBoxState = _b[0], setResizableBoxState = _b[1];
|
35
|
+
var handleResize = function (e, data) {
|
36
|
+
var size = data.size;
|
37
|
+
if (props.onResize) {
|
38
|
+
setResizableBoxState(function (prevState) { return (__assign(__assign({}, prevState), { width: size.width, height: size.height })); });
|
39
|
+
props.onResize(e, data);
|
40
|
+
}
|
41
|
+
else {
|
42
|
+
setResizableBoxState(function (prevState) { return (__assign(__assign({}, prevState), { width: size.width, height: size.height })); });
|
43
|
+
}
|
44
|
+
};
|
45
|
+
// NOTE - class형 컴포넌트에서 사용되는 getDerivedStateFromProps에 대응하기 위한 조건문입니다.
|
46
|
+
if (width !== resizableBoxState.propsWidth ||
|
47
|
+
height !== resizableBoxState.propsHeight) {
|
48
|
+
setResizableBoxState({
|
49
|
+
width: width,
|
50
|
+
height: height,
|
51
|
+
propsWidth: width,
|
52
|
+
propsHeight: height,
|
53
|
+
});
|
54
|
+
}
|
55
|
+
return (_jsx(Resizable, { axis: axis, draggableOpts: draggableOpts, handle: handle, handleSize: handleSize, height: resizableBoxState.height, lockAspectRatio: lockAspectRatio, maxConstraints: maxConstraints, minConstraints: minConstraints, onResizeStart: onResizeStart, onResize: handleResize, onResizeStop: onResizeStop, resizeHandles: resizeHandles, transformScale: transformScale, width: resizableBoxState.width, children: _jsx("div", __assign({}, restProps, { style: __assign(__assign({}, style), { width: resizableBoxState.width + "px", height: resizableBoxState.height + "px" }) })) }));
|
56
|
+
};
|
57
|
+
export default ResizableBox;
|
@@ -0,0 +1 @@
|
|
1
|
+
export { default as Resizable } from "./Resizable";
|
@@ -0,0 +1 @@
|
|
1
|
+
export { default as Resizable } from "./Resizable";
|
@@ -0,0 +1,69 @@
|
|
1
|
+
import { CSSProperties, ReactElement, Ref, SyntheticEvent } from "react";
|
2
|
+
import { DraggableCoreDefaultProps } from "../Draggable/types";
|
3
|
+
export type ReactRef<T> = {
|
4
|
+
current: T | null;
|
5
|
+
};
|
6
|
+
export type Axis = "both" | "x" | "y" | "none";
|
7
|
+
export type ResizeHandleAxis = "s" | "w" | "e" | "n" | "sw" | "nw" | "se" | "ne";
|
8
|
+
export type ResizableBoxState = {
|
9
|
+
width: number;
|
10
|
+
height: number;
|
11
|
+
propsWidth: number;
|
12
|
+
propsHeight: number;
|
13
|
+
};
|
14
|
+
export type DragCallbackData = {
|
15
|
+
node: HTMLElement;
|
16
|
+
x: number;
|
17
|
+
y: number;
|
18
|
+
deltaX: number;
|
19
|
+
deltaY: number;
|
20
|
+
lastX: number;
|
21
|
+
lastY: number;
|
22
|
+
};
|
23
|
+
export type ResizeCallbackData = {
|
24
|
+
node: HTMLElement;
|
25
|
+
size: {
|
26
|
+
width: number;
|
27
|
+
height: number;
|
28
|
+
top: number;
|
29
|
+
left: number;
|
30
|
+
};
|
31
|
+
handle: ResizeHandleAxis;
|
32
|
+
minWidth?: number;
|
33
|
+
minHeight?: number;
|
34
|
+
};
|
35
|
+
export type ResizableDefaultProps = {
|
36
|
+
axis: Axis;
|
37
|
+
handleSize: [number, number];
|
38
|
+
lockAspectRatio: boolean;
|
39
|
+
minConstraints: [number, number];
|
40
|
+
maxConstraints: [number, number];
|
41
|
+
resizeHandles: ResizeHandleAxis[];
|
42
|
+
transformScale: number;
|
43
|
+
};
|
44
|
+
export type ResizableProps = {
|
45
|
+
top?: number;
|
46
|
+
left?: number;
|
47
|
+
children?: ReactElement<any>;
|
48
|
+
axis?: Axis;
|
49
|
+
className?: string;
|
50
|
+
draggableOpts?: Partial<DraggableCoreDefaultProps>;
|
51
|
+
handle?: ResizeHandleType;
|
52
|
+
onResizeStop?: (e: SyntheticEvent<any>, data: ResizeCallbackData) => any;
|
53
|
+
onResizeStart?: (e: SyntheticEvent<any>, data: ResizeCallbackData) => any;
|
54
|
+
onResize?: (e: SyntheticEvent<any>, data: ResizeCallbackData) => any;
|
55
|
+
handleSize?: [number, number];
|
56
|
+
lockAspectRatio?: boolean;
|
57
|
+
minConstraints?: [number, number];
|
58
|
+
maxConstraints?: [number, number];
|
59
|
+
resizeHandles?: ResizeHandleAxis[];
|
60
|
+
transformScale?: number;
|
61
|
+
style?: CSSProperties;
|
62
|
+
width: number;
|
63
|
+
height: number;
|
64
|
+
isResizing?: boolean;
|
65
|
+
autoResize?: boolean;
|
66
|
+
colWidth?: number;
|
67
|
+
margin?: [number, number];
|
68
|
+
};
|
69
|
+
export type ResizeHandleType = ReactElement<any> | ((resizeHandleAxis: ResizeHandleAxis, ref: Ref<HTMLElement>) => ReactElement<any>);
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,21 @@
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
2
|
+
__assign = Object.assign || function(t) {
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
4
|
+
s = arguments[i];
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
6
|
+
t[p] = s[p];
|
7
|
+
}
|
8
|
+
return t;
|
9
|
+
};
|
10
|
+
return __assign.apply(this, arguments);
|
11
|
+
};
|
12
|
+
import React from "react";
|
13
|
+
export function cloneElement(element, props) {
|
14
|
+
if (props.style && element.props.style) {
|
15
|
+
props.style = __assign(__assign({}, element.props.style), props.style);
|
16
|
+
}
|
17
|
+
if (props.className && element.props.className) {
|
18
|
+
props.className = "".concat(element.props.className, " ").concat(props.className);
|
19
|
+
}
|
20
|
+
return React.cloneElement(element, props);
|
21
|
+
}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import React from "react";
|
2
|
+
type ComposedProps<Config> = {
|
3
|
+
measureBeforeMount?: boolean;
|
4
|
+
className?: string;
|
5
|
+
style?: Object;
|
6
|
+
width?: number;
|
7
|
+
} & Config;
|
8
|
+
declare const WidthProvider: <Config>(ComposedComponent: React.ComponentType<Config>) => (props: ComposedProps<Config>) => React.ReactElement;
|
9
|
+
export default WidthProvider;
|
@@ -0,0 +1,65 @@
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
2
|
+
__assign = Object.assign || function(t) {
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
4
|
+
s = arguments[i];
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
6
|
+
t[p] = s[p];
|
7
|
+
}
|
8
|
+
return t;
|
9
|
+
};
|
10
|
+
return __assign.apply(this, arguments);
|
11
|
+
};
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
13
|
+
/* eslint-disable react-hooks/rules-of-hooks */
|
14
|
+
import classNames from "../../external-lib/classnames";
|
15
|
+
import { useRef, useState, useEffect } from "react";
|
16
|
+
var layoutClassName = "react-grid-layout";
|
17
|
+
/*
|
18
|
+
* A simple HOC that provides facility for listening to container resizes.
|
19
|
+
*/
|
20
|
+
var WidthProvider = function (ComposedComponent) {
|
21
|
+
return function (props) {
|
22
|
+
var _a;
|
23
|
+
var elementRef = useRef(null);
|
24
|
+
var mounted = useRef(false);
|
25
|
+
var _b = useState({
|
26
|
+
width: (_a = props.width) !== null && _a !== void 0 ? _a : 1280,
|
27
|
+
}), state = _b[0], setState = _b[1];
|
28
|
+
var _c = props.measureBeforeMount, measureBeforeMount = _c === void 0 ? false : _c;
|
29
|
+
// useEffect(() => {
|
30
|
+
// if (mounted.current) {
|
31
|
+
// return;
|
32
|
+
// }
|
33
|
+
// mounted.current = true;
|
34
|
+
// window.addEventListener("resize", onWindowResize);
|
35
|
+
// onWindowResize();
|
36
|
+
// return () => {
|
37
|
+
// mounted.current = false;
|
38
|
+
// window.removeEventListener("resize", onWindowResize);
|
39
|
+
// };
|
40
|
+
// }, []);
|
41
|
+
useEffect(function () {
|
42
|
+
if (!elementRef.current)
|
43
|
+
return;
|
44
|
+
var resizeObserver = new ResizeObserver(function (callback) {
|
45
|
+
var object = callback[0];
|
46
|
+
var width = object.contentRect.width;
|
47
|
+
setState({ width: width });
|
48
|
+
});
|
49
|
+
resizeObserver.observe(elementRef.current);
|
50
|
+
return function () { return resizeObserver.disconnect(); };
|
51
|
+
}, [elementRef]);
|
52
|
+
// const onWindowResize = () => {
|
53
|
+
// if (!mounted.current) return;
|
54
|
+
// const node = elementRef.current;
|
55
|
+
// if (node instanceof HTMLElement && node.offsetWidth) {
|
56
|
+
// setState({ width: node.offsetWidth });
|
57
|
+
// }
|
58
|
+
// };
|
59
|
+
if (measureBeforeMount && !mounted.current) {
|
60
|
+
return (_jsx("div", { className: classNames(props.className, layoutClassName), style: props.style, ref: elementRef }));
|
61
|
+
}
|
62
|
+
return _jsx(ComposedComponent, __assign({}, props, { innerRef: elementRef }, state));
|
63
|
+
};
|
64
|
+
};
|
65
|
+
export default WidthProvider;
|
@@ -0,0 +1 @@
|
|
1
|
+
export { default as WidthProvider } from "./WidthProvider";
|
@@ -0,0 +1 @@
|
|
1
|
+
export { default as WidthProvider } from "./WidthProvider";
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import { RefObject } from "react";
|
2
|
+
export type WidthProviderProps = {
|
3
|
+
measureBeforeMount: boolean;
|
4
|
+
className?: string;
|
5
|
+
style?: Object;
|
6
|
+
};
|
7
|
+
export type WidthProviderState = {
|
8
|
+
width: number;
|
9
|
+
};
|
10
|
+
export type WidthProviderRef = {
|
11
|
+
innerRef?: RefObject<HTMLDivElement>;
|
12
|
+
};
|
13
|
+
export type ComposedProps = WidthProviderProps & WidthProviderState & WidthProviderRef;
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|