@byeolnaerim/flex-layout 0.0.8 → 0.0.9
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/flex-layout/components/FlexLayout.cjs +62 -28
- package/dist/flex-layout/components/FlexLayout.cjs.map +1 -1
- package/dist/flex-layout/components/FlexLayout.js +26 -11
- package/dist/flex-layout/components/FlexLayout.js.map +1 -1
- package/dist/flex-layout/components/FlexLayoutContainer.cjs +121 -55
- package/dist/flex-layout/components/FlexLayoutContainer.cjs.map +1 -1
- package/dist/flex-layout/components/FlexLayoutContainer.js +68 -25
- package/dist/flex-layout/components/FlexLayoutContainer.js.map +1 -1
- package/dist/flex-layout/components/FlexLayoutIFramePane.cjs +68 -0
- package/dist/flex-layout/components/FlexLayoutIFramePane.cjs.map +1 -0
- package/dist/flex-layout/components/FlexLayoutIFramePane.d.ts +4 -0
- package/dist/flex-layout/components/FlexLayoutIFramePane.js +44 -0
- package/dist/flex-layout/components/FlexLayoutIFramePane.js.map +1 -0
- package/dist/flex-layout/components/FlexLayoutResizePanel.cjs +96 -42
- package/dist/flex-layout/components/FlexLayoutResizePanel.cjs.map +1 -1
- package/dist/flex-layout/components/FlexLayoutResizePanel.d.ts +1 -1
- package/dist/flex-layout/components/FlexLayoutResizePanel.js +44 -14
- package/dist/flex-layout/components/FlexLayoutResizePanel.js.map +1 -1
- package/dist/flex-layout/components/FlexLayoutSplitScreen.cjs +184 -143
- package/dist/flex-layout/components/FlexLayoutSplitScreen.cjs.map +1 -1
- package/dist/flex-layout/components/FlexLayoutSplitScreen.js +71 -32
- package/dist/flex-layout/components/FlexLayoutSplitScreen.js.map +1 -1
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBox.cjs +253 -60
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBox.cjs.map +1 -1
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBox.d.ts +1 -1
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBox.js +215 -39
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBox.js.map +1 -1
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxContainer.cjs +40 -17
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxContainer.cjs.map +1 -1
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxContainer.js +7 -7
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxContainer.js.map +1 -1
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxItem.cjs +44 -21
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxItem.cjs.map +1 -1
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxItem.js +7 -8
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxItem.js.map +1 -1
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxTitleMore.cjs +40 -17
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxTitleMore.cjs.map +1 -1
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxTitleMore.js +5 -6
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxTitleMore.js.map +1 -1
- package/dist/flex-layout/components/FlexLayoutSplitScreenScrollBox.cjs +53 -29
- package/dist/flex-layout/components/FlexLayoutSplitScreenScrollBox.cjs.map +1 -1
- package/dist/flex-layout/components/FlexLayoutSplitScreenScrollBox.js +14 -10
- package/dist/flex-layout/components/FlexLayoutSplitScreenScrollBox.js.map +1 -1
- package/dist/flex-layout/components/FlexLayoutStickyBox.cjs +46 -27
- package/dist/flex-layout/components/FlexLayoutStickyBox.cjs.map +1 -1
- package/dist/flex-layout/components/FlexLayoutStickyBox.d.ts +1 -0
- package/dist/flex-layout/components/FlexLayoutStickyBox.js +13 -8
- package/dist/flex-layout/components/FlexLayoutStickyBox.js.map +1 -1
- package/dist/flex-layout/components/index.cjs +54 -49
- package/dist/flex-layout/components/index.cjs.map +1 -1
- package/dist/flex-layout/components/index.js +16 -8
- package/dist/flex-layout/components/index.js.map +1 -1
- package/dist/flex-layout/hooks/index.cjs +23 -19
- package/dist/flex-layout/hooks/index.cjs.map +1 -1
- package/dist/flex-layout/hooks/index.js +2 -3
- package/dist/flex-layout/hooks/index.js.map +1 -1
- package/dist/flex-layout/hooks/useDrag.cjs +136 -79
- package/dist/flex-layout/hooks/useDrag.cjs.map +1 -1
- package/dist/flex-layout/hooks/useDrag.d.ts +5 -0
- package/dist/flex-layout/hooks/useDrag.js +86 -47
- package/dist/flex-layout/hooks/useDrag.js.map +1 -1
- package/dist/flex-layout/hooks/useFlexLayoutSplitScreen.cjs +40 -19
- package/dist/flex-layout/hooks/useFlexLayoutSplitScreen.cjs.map +1 -1
- package/dist/flex-layout/hooks/useFlexLayoutSplitScreen.js +9 -7
- package/dist/flex-layout/hooks/useFlexLayoutSplitScreen.js.map +1 -1
- package/dist/flex-layout/hooks/useListPaging.cjs +68 -35
- package/dist/flex-layout/hooks/useListPaging.cjs.map +1 -1
- package/dist/flex-layout/hooks/useListPaging.js +34 -18
- package/dist/flex-layout/hooks/useListPaging.js.map +1 -1
- package/dist/flex-layout/hooks/useSizes.cjs +45 -23
- package/dist/flex-layout/hooks/useSizes.cjs.map +1 -1
- package/dist/flex-layout/hooks/useSizes.js +6 -6
- package/dist/flex-layout/hooks/useSizes.js.map +1 -1
- package/dist/flex-layout/index.cjs +29 -40
- package/dist/flex-layout/index.cjs.map +1 -1
- package/dist/flex-layout/index.js +5 -6
- package/dist/flex-layout/index.js.map +1 -1
- package/dist/flex-layout/providers/FlexLayoutContext.cjs +35 -12
- package/dist/flex-layout/providers/FlexLayoutContext.cjs.map +1 -1
- package/dist/flex-layout/providers/FlexLayoutContext.js +7 -6
- package/dist/flex-layout/providers/FlexLayoutContext.js.map +1 -1
- package/dist/flex-layout/providers/FlexLayoutHooks.cjs +82 -53
- package/dist/flex-layout/providers/FlexLayoutHooks.cjs.map +1 -1
- package/dist/flex-layout/providers/FlexLayoutHooks.js +33 -8
- package/dist/flex-layout/providers/FlexLayoutHooks.js.map +1 -1
- package/dist/flex-layout/providers/index.cjs +21 -12
- package/dist/flex-layout/providers/index.cjs.map +1 -1
- package/dist/flex-layout/providers/index.js +1 -2
- package/dist/flex-layout/providers/index.js.map +1 -1
- package/dist/flex-layout/store/FlexLayoutContainerStore.cjs +130 -76
- package/dist/flex-layout/store/FlexLayoutContainerStore.cjs.map +1 -1
- package/dist/flex-layout/store/FlexLayoutContainerStore.d.ts +1 -0
- package/dist/flex-layout/store/FlexLayoutContainerStore.js +63 -38
- package/dist/flex-layout/store/FlexLayoutContainerStore.js.map +1 -1
- package/dist/flex-layout/store/index.cjs +21 -12
- package/dist/flex-layout/store/index.cjs.map +1 -1
- package/dist/flex-layout/store/index.js +1 -2
- package/dist/flex-layout/store/index.js.map +1 -1
- package/dist/flex-layout/types/FlexDirectionTypes.cjs +16 -3
- package/dist/flex-layout/types/FlexDirectionTypes.cjs.map +1 -1
- package/dist/flex-layout/types/FlexDirectionTypes.js +0 -2
- package/dist/flex-layout/types/FlexDirectionTypes.js.map +1 -1
- package/dist/flex-layout/types/FlexLayoutTypes.cjs +16 -3
- package/dist/flex-layout/types/FlexLayoutTypes.cjs.map +1 -1
- package/dist/flex-layout/types/FlexLayoutTypes.d.ts +1 -3
- package/dist/flex-layout/types/FlexLayoutTypes.js +0 -2
- package/dist/flex-layout/types/FlexLayoutTypes.js.map +1 -1
- package/dist/flex-layout/utils/FlexLayoutUtils.cjs +57 -20
- package/dist/flex-layout/utils/FlexLayoutUtils.cjs.map +1 -1
- package/dist/flex-layout/utils/FlexLayoutUtils.d.ts +4 -4
- package/dist/flex-layout/utils/FlexLayoutUtils.js +23 -8
- package/dist/flex-layout/utils/FlexLayoutUtils.js.map +1 -1
- package/dist/flex-layout/utils/index.cjs +21 -12
- package/dist/flex-layout/utils/index.cjs.map +1 -1
- package/dist/flex-layout/utils/index.js +1 -2
- package/dist/flex-layout/utils/index.js.map +1 -1
- package/dist/index.cjs +21 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/metafile-cjs.json +1 -0
- package/dist/metafile-esm.json +1 -0
- package/dist/types/css.d.cjs +1 -3
- package/dist/types/css.d.cjs.map +1 -1
- package/dist/types/css.d.js +0 -2
- package/dist/types/css.d.js.map +1 -1
- package/package.json +5 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
4
|
+
import { useSize } from "../hooks/useSizes";
|
|
5
|
+
import { useFlexLayoutContext } from "../providers/FlexLayoutContext";
|
|
6
|
+
import { setContainerRef } from "../store/FlexLayoutContainerStore";
|
|
7
|
+
import styles from "../styles/FlexLayout.module.css";
|
|
8
|
+
import { getGrow, mathGrow, mathWeight } from "../utils/FlexLayoutUtils";
|
|
9
|
+
import FlexLayoutResizePanel from "./FlexLayoutResizePanel";
|
|
10
10
|
function FlexLayoutContainer({
|
|
11
11
|
isFitContent,
|
|
12
12
|
isFitResize,
|
|
@@ -36,11 +36,21 @@ function FlexLayoutContainer({
|
|
|
36
36
|
useSize(fitContent)
|
|
37
37
|
);
|
|
38
38
|
const flexContainerNodeRef = useRef(null);
|
|
39
|
+
const isUserResizingRef = useRef(false);
|
|
40
|
+
const handleResizingChange = useCallback((v) => {
|
|
41
|
+
isUserResizingRef.current = v;
|
|
42
|
+
}, []);
|
|
39
43
|
const flexContainerRef = useCallback(
|
|
40
44
|
(node) => {
|
|
41
45
|
flexContainerNodeRef.current = node;
|
|
42
|
-
if (node
|
|
43
|
-
setContainerRef(
|
|
46
|
+
if (node) {
|
|
47
|
+
setContainerRef(
|
|
48
|
+
layoutName,
|
|
49
|
+
containerName,
|
|
50
|
+
flexContainerNodeRef
|
|
51
|
+
);
|
|
52
|
+
} else {
|
|
53
|
+
setContainerRef(layoutName, containerName, null);
|
|
44
54
|
}
|
|
45
55
|
},
|
|
46
56
|
[layoutName, containerName]
|
|
@@ -53,15 +63,6 @@ function FlexLayoutContainer({
|
|
|
53
63
|
initialPrevGrow
|
|
54
64
|
);
|
|
55
65
|
const [isFirstLoad, setIsFirstLoad] = useState(true);
|
|
56
|
-
useEffect(() => {
|
|
57
|
-
if (!flexContainerNodeRef.current) return;
|
|
58
|
-
setContainerRef(layoutName, containerName, flexContainerNodeRef);
|
|
59
|
-
return () => {
|
|
60
|
-
setContainerRef(layoutName, containerName, {
|
|
61
|
-
current: null
|
|
62
|
-
});
|
|
63
|
-
};
|
|
64
|
-
}, [containerName, layoutName]);
|
|
65
66
|
useEffect(() => {
|
|
66
67
|
if (typeof window == "undefined" || flexContainerNodeRef.current === null)
|
|
67
68
|
return;
|
|
@@ -98,7 +99,8 @@ function FlexLayoutContainer({
|
|
|
98
99
|
};
|
|
99
100
|
}, [containerName]);
|
|
100
101
|
useEffect(() => {
|
|
101
|
-
if (!flexContainerNodeRef.current || !ref || !ref.current || !size || !fitContent)
|
|
102
|
+
if (!flexContainerNodeRef.current || !ref || !ref.current || !size || !fitContent || // getGrow(flexContainerNodeRef.current) == 0 ||
|
|
103
|
+
isUserResizingRef.current)
|
|
102
104
|
return;
|
|
103
105
|
requestAnimationFrame(() => {
|
|
104
106
|
if (!flexContainerNodeRef.current) return;
|
|
@@ -144,6 +146,46 @@ function FlexLayoutContainer({
|
|
|
144
146
|
});
|
|
145
147
|
}
|
|
146
148
|
}, []);
|
|
149
|
+
useEffect(() => {
|
|
150
|
+
if (!flexContainerNodeRef.current || !isFitContent || !fitContent || !size || getGrow(flexContainerNodeRef.current) == 0)
|
|
151
|
+
return;
|
|
152
|
+
const parent = flexContainerNodeRef.current.parentElement;
|
|
153
|
+
if (!parent) return;
|
|
154
|
+
const sizeName = fitContent.charAt(0).toUpperCase() + fitContent.substring(1);
|
|
155
|
+
const parentSize = parent["client" + sizeName] || 0;
|
|
156
|
+
if (!parentSize || containerCount <= 0) return;
|
|
157
|
+
const nextGrowRaw = mathGrow(size, parentSize, containerCount);
|
|
158
|
+
const nextGrow = Math.min(containerCount, Math.max(0, nextGrowRaw));
|
|
159
|
+
const currentGrow = getGrow(flexContainerNodeRef.current);
|
|
160
|
+
if (Math.abs(nextGrow - currentGrow) < 1e-3) return;
|
|
161
|
+
setPrevGrowState(currentGrow);
|
|
162
|
+
setGrowState(nextGrow);
|
|
163
|
+
const containers = [...parent.children || []].filter((el) => {
|
|
164
|
+
const item = el;
|
|
165
|
+
return item.hasAttribute("data-container_name") && !item.classList.contains(styles["flex-resize-panel"]);
|
|
166
|
+
});
|
|
167
|
+
const siblings = containers.filter(
|
|
168
|
+
(el) => el !== flexContainerNodeRef.current
|
|
169
|
+
);
|
|
170
|
+
const adjustable = siblings.filter((el) => el.style.flex !== "0 1 0%");
|
|
171
|
+
const remaining = containerCount - nextGrow;
|
|
172
|
+
if (remaining <= 0 || adjustable.length === 0) return;
|
|
173
|
+
const oldSum = adjustable.reduce((sum, el) => sum + getGrow(el), 0);
|
|
174
|
+
if (oldSum <= 0) {
|
|
175
|
+
const each = remaining / adjustable.length;
|
|
176
|
+
adjustable.forEach((el) => {
|
|
177
|
+
el.dataset.grow = each.toString();
|
|
178
|
+
el.style.flex = `${each} 1 0%`;
|
|
179
|
+
});
|
|
180
|
+
} else {
|
|
181
|
+
adjustable.forEach((el) => {
|
|
182
|
+
const g = getGrow(el);
|
|
183
|
+
const scaled = remaining * (g / oldSum);
|
|
184
|
+
el.dataset.grow = scaled.toString();
|
|
185
|
+
el.style.flex = `${scaled} 1 0%`;
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
}, [size, isFitContent, fitContent, containerCount]);
|
|
147
189
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
148
190
|
/* @__PURE__ */ jsx(
|
|
149
191
|
"div",
|
|
@@ -178,12 +220,13 @@ function FlexLayoutContainer({
|
|
|
178
220
|
containerCount,
|
|
179
221
|
panelMode,
|
|
180
222
|
panelClassName,
|
|
181
|
-
panelMovementMode
|
|
223
|
+
panelMovementMode,
|
|
224
|
+
onResizingChange: handleResizingChange
|
|
182
225
|
}
|
|
183
226
|
)
|
|
184
227
|
] });
|
|
185
228
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
229
|
+
export {
|
|
230
|
+
FlexLayoutContainer as default
|
|
231
|
+
};
|
|
189
232
|
//# sourceMappingURL=FlexLayoutContainer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/flex-layout/components/FlexLayoutContainer.tsx"],"names":[],"mappings":"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","file":"FlexLayoutContainer.js","sourcesContent":["\"use client\";\r\nimport { useCallback, useEffect, useRef, useState } from \"react\";\r\nimport { useSize } from \"../hooks/useSizes\";\r\nimport { useFlexLayoutContext } from \"../providers/FlexLayoutContext\";\r\nimport { setContainerRef } from \"../store/FlexLayoutContainerStore\";\r\nimport styles from \"../styles/FlexLayout.module.css\";\r\nimport { FlexContainerProps } from \"../types/FlexLayoutTypes\";\r\nimport { getGrow, mathGrow, mathWeight } from \"../utils/FlexLayoutUtils\";\r\nimport FlexLayoutResizePanel from \"./FlexLayoutResizePanel\";\r\n\r\nexport default function FlexLayoutContainer({\r\n\tisFitContent,\r\n\tisFitResize,\r\n\t// fitContent,\r\n\t// containerCount,\r\n\t// layoutName,\r\n\tcontainerName,\r\n\tgrow: initialGrow,\r\n\tprevGrow: initialPrevGrow,\r\n\tisInitialResizable,\r\n\tisResizePanel,\r\n\tchildren,\r\n\tclassName,\r\n\tpanelMode,\r\n}: FlexContainerProps) {\r\n\tconst {\r\n\t\tdirection,\r\n\t\tpanelMovementMode,\r\n\t\tpanelClassName,\r\n\t\tlayoutName,\r\n\t\tfitContent,\r\n\t\tcontainerCount,\r\n\t} = useFlexLayoutContext();\r\n\r\n\tconst { ref, size } =\r\n\t\t// isFitContent && fitContent\r\n\t\t//?\r\n\t\tuseSize(fitContent);\r\n\t//: { ref: null, size: null };\r\n\t// 콜백 ref에서 접근하기 위한 내부 ref 생성\r\n\tconst flexContainerNodeRef = useRef<HTMLDivElement | null>(null);\r\n\r\n\t// 콜백 ref 정의\r\n\tconst flexContainerRef = useCallback(\r\n\t\t(node: HTMLDivElement | null) => {\r\n\t\t\tflexContainerNodeRef.current = node;\r\n\t\t\tif (node !== null) {\r\n\t\t\t\tsetContainerRef(layoutName, containerName, { current: node });\r\n\t\t\t} else {\r\n\t\t\t\t// 컴포넌트가 언마운트될 때 필요한 작업이 있다면 여기에 추가\r\n\t\t\t}\r\n\t\t},\r\n\t\t[layoutName, containerName],\r\n\t);\r\n\r\n\t// 초기 SSR 시점에는 sessionStorage를 사용할 수 없으므로 일단 initialGrow를 사용\r\n\tconst [growState, setGrowState] = useState<number | undefined>(initialGrow);\r\n\tuseEffect(() => {\r\n\t\tsetGrowState(initialGrow);\r\n\t}, [initialGrow]);\r\n\tconst [prevGrowState, setPrevGrowState] = useState<number | undefined>(\r\n\t\tinitialPrevGrow,\r\n\t);\r\n\tconst [isFirstLoad, setIsFirstLoad] = useState<boolean>(true);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!flexContainerNodeRef.current) return;\r\n\t\tsetContainerRef(layoutName, containerName, flexContainerNodeRef);\r\n\t\treturn () => {\r\n\t\t\tsetContainerRef(layoutName, containerName, {\r\n\t\t\t\tcurrent: null,\r\n\t\t\t} as any);\r\n\t\t};\r\n\t}, [containerName, layoutName]);\r\n\r\n\t// 클라이언트 마운트 후 sessionStorage에서 grow값을 가져와 state 업데이트 (SSR/Hydration 안정화)\r\n\tuseEffect(() => {\r\n\t\tif (\r\n\t\t\ttypeof window == \"undefined\" ||\r\n\t\t\tflexContainerNodeRef.current === null\r\n\t\t)\r\n\t\t\treturn;\r\n\r\n\t\tconst storedGrow = sessionStorage.getItem(containerName);\r\n\t\tif (storedGrow !== null) {\r\n\t\t\tconst parsed = parseFloat(storedGrow);\r\n\t\t\tif (!isNaN(parsed)) {\r\n\t\t\t\tflexContainerNodeRef.current.style.flex = `${parsed} 1 0%`;\r\n\t\t\t\tsetGrowState(parsed);\r\n\t\t\t}\r\n\t\t}\r\n\t}, [containerName]);\r\n\r\n\t// 스타일 변경 감지를 위한 MutationObserver\r\n\tuseEffect(() => {\r\n\t\tif (!flexContainerNodeRef.current) return;\r\n\t\tconst targetNode = flexContainerNodeRef.current;\r\n\r\n\t\tconst observer = new MutationObserver((mutations) => {\r\n\t\t\tfor (const mutation of mutations) {\r\n\t\t\t\tif (\r\n\t\t\t\t\tmutation.type === \"attributes\" &&\r\n\t\t\t\t\tmutation.attributeName === \"style\" &&\r\n\t\t\t\t\ttargetNode.style.flex\r\n\t\t\t\t) {\r\n\t\t\t\t\t// style.flex = \"X 1 0%\" 형태이므로 X를 파싱\r\n\t\t\t\t\tconst flexValue = targetNode.style.flex;\r\n\t\t\t\t\tconst parsedGrow = parseFloat(flexValue.split(\" \")[0]);\r\n\t\t\t\t\tif (!isNaN(parsedGrow)) {\r\n\t\t\t\t\t\t// sessionStorage에 저장\r\n\t\t\t\t\t\t// sessionStorage.setItem(\r\n\t\t\t\t\t\t// containerName,\r\n\t\t\t\t\t\t// parsedGrow.toString()\r\n\t\t\t\t\t\t// );\r\n\t\t\t\t\t\t// state 업데이트\r\n\t\t\t\t\t\tsetGrowState(parsedGrow);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tobserver.observe(targetNode, {\r\n\t\t\tattributes: true,\r\n\t\t\tattributeFilter: [\"style\"],\r\n\t\t\tattributeOldValue: true,\r\n\t\t});\r\n\r\n\t\treturn () => {\r\n\t\t\tobserver.disconnect();\r\n\t\t};\r\n\t}, [containerName]);\r\n\r\n\tuseEffect(() => {\r\n\t\t// 컴포넌트 크기 및 설정값에 따른 사이즈 재조정\r\n\t\tif (\r\n\t\t\t!flexContainerNodeRef.current ||\r\n\t\t\t!ref ||\r\n\t\t\t!ref.current ||\r\n\t\t\t!size ||\r\n\t\t\t!fitContent\r\n\t\t\t//||getGrow(flexContainerRef.current) == 0\r\n\t\t)\r\n\t\t\treturn;\r\n\t\trequestAnimationFrame(() => {\r\n\t\t\tif (!flexContainerNodeRef.current) return;\r\n\t\t\tconst sizeName = `${fitContent.charAt(0).toUpperCase() + fitContent.substring(1)}`;\r\n\t\t\tconst parentSize =\r\n\t\t\t\t(flexContainerNodeRef.current.parentElement &&\r\n\t\t\t\t\tflexContainerNodeRef.current.parentElement[\r\n\t\t\t\t\t\t(\"client\" + sizeName) as \"clientWidth\" | \"clientHeight\"\r\n\t\t\t\t\t]) ||\r\n\t\t\t\t0;\r\n\t\t\tif (isFitContent) {\r\n\t\t\t\tflexContainerNodeRef.current.style[\r\n\t\t\t\t\t(\"max\" + sizeName) as \"maxWidth\" | \"maxHeight\"\r\n\t\t\t\t] = size + \"px\";\r\n\t\t\t}\r\n\t\t\tif (!isFitResize && isFirstLoad) {\r\n\t\t\t\tsetIsFirstLoad(false);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (getGrow(flexContainerNodeRef.current) != 0 && isFitResize) {\r\n\t\t\t\tconst newGrow = mathGrow(size, parentSize, containerCount);\r\n\t\t\t\tsetPrevGrowState(growState);\r\n\t\t\t\tsetGrowState(newGrow);\r\n\t\t\t\t// flexContainerNodeRef.current.dataset.prev_grow =\r\n\t\t\t\t// flexContainerNodeRef.current.dataset.grow;\r\n\t\t\t\t// flexContainerNodeRef.current.dataset.grow = newGrow.toString();\r\n\t\t\t\t// flexContainerNodeRef.current.style.flex = `${newGrow} 1 0%`;\r\n\t\t\t}\r\n\t\t});\r\n\t}, [size, containerCount, isFitResize, children]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!flexContainerNodeRef.current) return;\r\n\r\n\t\tlet notGrowList: Array<HTMLElement> = [];\r\n\t\tlet containerList = [\r\n\t\t\t...(flexContainerNodeRef.current.parentElement?.children || []),\r\n\t\t].filter((e) => e.hasAttribute(\"data-container_name\"));\r\n\t\tlet remainingGrow = containerList.reduce((t, e, i) => {\r\n\t\t\tlet item = e as HTMLElement;\r\n\r\n\t\t\tif (item.classList.contains(styles[\"flex-resize-panel\"])) return t;\r\n\r\n\t\t\tif (\r\n\t\t\t\te.hasAttribute(\"data-grow\") == false ||\r\n\t\t\t\te.getAttribute(\"data-is_resize\") === \"true\"\r\n\t\t\t) {\r\n\t\t\t\tnotGrowList.push(item);\r\n\t\t\t\treturn t;\r\n\t\t\t}\r\n\t\t\tlet grow = parseFloat(item.dataset.grow || \"\");\r\n\t\t\titem.style.flex = `${grow} 1 0%`;\r\n\t\t\tt -= grow;\r\n\t\t\treturn t;\r\n\t\t}, containerList.length);\r\n\t\tif (notGrowList.length != 0) {\r\n\t\t\tlet resizeWeight = mathWeight(notGrowList.length, remainingGrow);\r\n\t\t\tnotGrowList.forEach((e) => {\r\n\t\t\t\te.dataset.grow = resizeWeight.toString();\r\n\t\t\t\te.style.flex = `${resizeWeight} 1 0%`;\r\n\t\t\t});\r\n\t\t}\r\n\t}, []);\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<div\r\n\t\t\t\tid={containerName}\r\n\t\t\t\tdata-container_name={containerName}\r\n\t\t\t\tref={flexContainerRef}\r\n\t\t\t\tclassName={`${styles[\"flex-container\"]} ${className && className !== \"\" ? className : \"\"}`}\r\n\t\t\t\t{...(growState !== undefined\r\n\t\t\t\t\t? { [\"data-grow\"]: growState }\r\n\t\t\t\t\t: {})}\r\n\t\t\t\t{...(prevGrowState != undefined\r\n\t\t\t\t\t? { [\"data-prev_grow\"]: prevGrowState }\r\n\t\t\t\t\t: {})}\r\n\t\t\t\tdata-is_resize={isInitialResizable}\r\n\t\t\t\tdata-is_resize_panel={isResizePanel}\r\n\t\t\t\tstyle={\r\n\t\t\t\t\t(growState !== undefined && {\r\n\t\t\t\t\t\tflex: `${growState} 1 0%`,\r\n\t\t\t\t\t}) ||\r\n\t\t\t\t\t{}\r\n\t\t\t\t}\r\n\t\t\t>\r\n\t\t\t\t{(isFitContent && (\r\n\t\t\t\t\t<div\r\n\t\t\t\t\t\tclassName={`${styles[\"flex-content-fit-wrapper\"]}`}\r\n\t\t\t\t\t\tref={ref}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{children}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)) ||\r\n\t\t\t\t\tchildren}\r\n\t\t\t</div>\r\n\t\t\t{isResizePanel && (\r\n\t\t\t\t<FlexLayoutResizePanel\r\n\t\t\t\t\tcontainerName={containerName}\r\n\t\t\t\t\tlayoutName={layoutName}\r\n\t\t\t\t\tdirection={direction}\r\n\t\t\t\t\tcontainerCount={containerCount}\r\n\t\t\t\t\tpanelMode={panelMode}\r\n\t\t\t\t\tpanelClassName={panelClassName}\r\n\t\t\t\t\tpanelMovementMode={panelMovementMode}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\t\t</>\r\n\t);\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/flex-layout/components/FlexLayoutContainer.tsx"],"sourcesContent":["\"use client\";\r\nimport { useCallback, useEffect, useRef, useState } from \"react\";\r\nimport { useSize } from \"../hooks/useSizes\";\r\nimport { useFlexLayoutContext } from \"../providers/FlexLayoutContext\";\r\nimport { setContainerRef } from \"../store/FlexLayoutContainerStore\";\r\nimport styles from \"../styles/FlexLayout.module.css\";\r\nimport { FlexContainerProps } from \"../types/FlexLayoutTypes\";\r\nimport { getGrow, mathGrow, mathWeight } from \"../utils/FlexLayoutUtils\";\r\nimport FlexLayoutResizePanel from \"./FlexLayoutResizePanel\";\r\n\r\nexport default function FlexLayoutContainer({\r\n\tisFitContent,\r\n\tisFitResize,\r\n\t// fitContent,\r\n\t// containerCount,\r\n\t// layoutName,\r\n\tcontainerName,\r\n\tgrow: initialGrow,\r\n\tprevGrow: initialPrevGrow,\r\n\tisInitialResizable,\r\n\tisResizePanel,\r\n\tchildren,\r\n\tclassName,\r\n\tpanelMode,\r\n}: FlexContainerProps) {\r\n\tconst {\r\n\t\tdirection,\r\n\t\tpanelMovementMode,\r\n\t\tpanelClassName,\r\n\t\tlayoutName,\r\n\t\tfitContent,\r\n\t\tcontainerCount,\r\n\t} = useFlexLayoutContext();\r\n\r\n\tconst { ref, size } =\r\n\t\t// isFitContent && fitContent\r\n\t\t//?\r\n\t\tuseSize(fitContent);\r\n\t//: { ref: null, size: null };\r\n\t// 콜백 ref에서 접근하기 위한 내부 ref 생성\r\n\tconst flexContainerNodeRef = useRef<HTMLDivElement | null>(null);\r\n\r\n\tconst isUserResizingRef = useRef(false);\r\n\r\n\tconst handleResizingChange = useCallback((v: boolean) => {\r\n\t\tisUserResizingRef.current = v;\r\n\t}, []);\r\n\r\n\t// 콜백 ref 정의\r\n\tconst flexContainerRef = useCallback(\r\n\t\t(node: HTMLDivElement | null) => {\r\n\t\t\tflexContainerNodeRef.current = node;\r\n\r\n\t\t\t// 마운트: 저장 / 언마운트: 삭제\r\n\t\t\tif (node) {\r\n\t\t\t\tsetContainerRef(\r\n\t\t\t\t\tlayoutName,\r\n\t\t\t\t\tcontainerName,\r\n\t\t\t\t\tflexContainerNodeRef,\r\n\t\t\t\t);\r\n\t\t\t} else {\r\n\t\t\t\tsetContainerRef(layoutName, containerName, null);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[layoutName, containerName],\r\n\t);\r\n\r\n\t// 초기 SSR 시점에는 sessionStorage를 사용할 수 없으므로 일단 initialGrow를 사용\r\n\tconst [growState, setGrowState] = useState<number | undefined>(initialGrow);\r\n\tuseEffect(() => {\r\n\t\tsetGrowState(initialGrow);\r\n\t}, [initialGrow]);\r\n\tconst [prevGrowState, setPrevGrowState] = useState<number | undefined>(\r\n\t\tinitialPrevGrow,\r\n\t);\r\n\tconst [isFirstLoad, setIsFirstLoad] = useState<boolean>(true);\r\n\r\n\t// 클라이언트 마운트 후 sessionStorage에서 grow값을 가져와 state 업데이트 (SSR/Hydration 안정화)\r\n\tuseEffect(() => {\r\n\t\tif (\r\n\t\t\ttypeof window == \"undefined\" ||\r\n\t\t\tflexContainerNodeRef.current === null\r\n\t\t)\r\n\t\t\treturn;\r\n\r\n\t\tconst storedGrow = sessionStorage.getItem(containerName);\r\n\t\tif (storedGrow !== null) {\r\n\t\t\tconst parsed = parseFloat(storedGrow);\r\n\t\t\tif (!isNaN(parsed)) {\r\n\t\t\t\tflexContainerNodeRef.current.style.flex = `${parsed} 1 0%`;\r\n\t\t\t\tsetGrowState(parsed);\r\n\t\t\t}\r\n\t\t}\r\n\t}, [containerName]);\r\n\r\n\t// 스타일 변경 감지를 위한 MutationObserver\r\n\tuseEffect(() => {\r\n\t\tif (!flexContainerNodeRef.current) return;\r\n\t\tconst targetNode = flexContainerNodeRef.current;\r\n\r\n\t\tconst observer = new MutationObserver((mutations) => {\r\n\t\t\tfor (const mutation of mutations) {\r\n\t\t\t\tif (\r\n\t\t\t\t\tmutation.type === \"attributes\" &&\r\n\t\t\t\t\tmutation.attributeName === \"style\" &&\r\n\t\t\t\t\ttargetNode.style.flex\r\n\t\t\t\t) {\r\n\t\t\t\t\t// style.flex = \"X 1 0%\" 형태이므로 X를 파싱\r\n\t\t\t\t\tconst flexValue = targetNode.style.flex;\r\n\t\t\t\t\tconst parsedGrow = parseFloat(flexValue.split(\" \")[0]);\r\n\t\t\t\t\tif (!isNaN(parsedGrow)) {\r\n\t\t\t\t\t\t// sessionStorage에 저장\r\n\t\t\t\t\t\t// sessionStorage.setItem(\r\n\t\t\t\t\t\t// containerName,\r\n\t\t\t\t\t\t// parsedGrow.toString()\r\n\t\t\t\t\t\t// );\r\n\t\t\t\t\t\t// state 업데이트\r\n\t\t\t\t\t\tsetGrowState(parsedGrow);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tobserver.observe(targetNode, {\r\n\t\t\tattributes: true,\r\n\t\t\tattributeFilter: [\"style\"],\r\n\t\t\tattributeOldValue: true,\r\n\t\t});\r\n\r\n\t\treturn () => {\r\n\t\t\tobserver.disconnect();\r\n\t\t};\r\n\t}, [containerName]);\r\n\r\n\tuseEffect(() => {\r\n\t\t// 컴포넌트 크기 및 설정값에 따른 사이즈 재조정\r\n\t\tif (\r\n\t\t\t!flexContainerNodeRef.current ||\r\n\t\t\t!ref ||\r\n\t\t\t!ref.current ||\r\n\t\t\t!size ||\r\n\t\t\t!fitContent ||\r\n\t\t\t// getGrow(flexContainerNodeRef.current) == 0 ||\r\n\t\t\tisUserResizingRef.current // 사용자가 직접 사이즈 조정 중일 때는 자동 조정 방지\r\n\t\t)\r\n\t\t\treturn;\r\n\t\trequestAnimationFrame(() => {\r\n\t\t\tif (!flexContainerNodeRef.current) return;\r\n\t\t\tconst sizeName = `${fitContent.charAt(0).toUpperCase() + fitContent.substring(1)}`;\r\n\t\t\tconst parentSize =\r\n\t\t\t\t(flexContainerNodeRef.current.parentElement &&\r\n\t\t\t\t\tflexContainerNodeRef.current.parentElement[\r\n\t\t\t\t\t\t(\"client\" + sizeName) as \"clientWidth\" | \"clientHeight\"\r\n\t\t\t\t\t]) ||\r\n\t\t\t\t0;\r\n\t\t\tif (isFitContent) {\r\n\t\t\t\tflexContainerNodeRef.current.style[\r\n\t\t\t\t\t(\"max\" + sizeName) as \"maxWidth\" | \"maxHeight\"\r\n\t\t\t\t] = size + \"px\";\r\n\t\t\t}\r\n\t\t\tif (!isFitResize && isFirstLoad) {\r\n\t\t\t\tsetIsFirstLoad(false);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (getGrow(flexContainerNodeRef.current) != 0 && isFitResize) {\r\n\t\t\t\tconst newGrow = mathGrow(size, parentSize, containerCount);\r\n\t\t\t\tsetPrevGrowState(growState);\r\n\t\t\t\tsetGrowState(newGrow);\r\n\t\t\t\t// flexContainerNodeRef.current.dataset.prev_grow =\r\n\t\t\t\t// flexContainerNodeRef.current.dataset.grow;\r\n\t\t\t\t// flexContainerNodeRef.current.dataset.grow = newGrow.toString();\r\n\t\t\t\t// flexContainerNodeRef.current.style.flex = `${newGrow} 1 0%`;\r\n\t\t\t}\r\n\t\t});\r\n\t}, [size, containerCount, isFitResize, children]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!flexContainerNodeRef.current) return;\r\n\r\n\t\tlet notGrowList: Array<HTMLElement> = [];\r\n\t\tlet containerList = [\r\n\t\t\t...(flexContainerNodeRef.current.parentElement?.children || []),\r\n\t\t].filter((e) => e.hasAttribute(\"data-container_name\"));\r\n\t\tlet remainingGrow = containerList.reduce((t, e, i) => {\r\n\t\t\tlet item = e as HTMLElement;\r\n\r\n\t\t\tif (item.classList.contains(styles[\"flex-resize-panel\"])) return t;\r\n\r\n\t\t\tif (\r\n\t\t\t\te.hasAttribute(\"data-grow\") == false ||\r\n\t\t\t\te.getAttribute(\"data-is_resize\") === \"true\"\r\n\t\t\t) {\r\n\t\t\t\tnotGrowList.push(item);\r\n\t\t\t\treturn t;\r\n\t\t\t}\r\n\t\t\tlet grow = parseFloat(item.dataset.grow || \"\");\r\n\t\t\titem.style.flex = `${grow} 1 0%`;\r\n\t\t\tt -= grow;\r\n\t\t\treturn t;\r\n\t\t}, containerList.length);\r\n\t\tif (notGrowList.length != 0) {\r\n\t\t\tlet resizeWeight = mathWeight(notGrowList.length, remainingGrow);\r\n\t\t\tnotGrowList.forEach((e) => {\r\n\t\t\t\te.dataset.grow = resizeWeight.toString();\r\n\t\t\t\te.style.flex = `${resizeWeight} 1 0%`;\r\n\t\t\t});\r\n\t\t}\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (\r\n\t\t\t!flexContainerNodeRef.current ||\r\n\t\t\t!isFitContent ||\r\n\t\t\t!fitContent ||\r\n\t\t\t!size ||\r\n\t\t\tgetGrow(flexContainerNodeRef.current) == 0\r\n\t\t)\r\n\t\t\treturn;\r\n\r\n\t\tconst parent = flexContainerNodeRef.current.parentElement;\r\n\t\tif (!parent) return;\r\n\r\n\t\tconst sizeName =\r\n\t\t\tfitContent.charAt(0).toUpperCase() + fitContent.substring(1);\r\n\t\tconst parentSize =\r\n\t\t\t(parent[\r\n\t\t\t\t(\"client\" + sizeName) as \"clientWidth\" | \"clientHeight\"\r\n\t\t\t] as number) || 0;\r\n\r\n\t\tif (!parentSize || containerCount <= 0) return;\r\n\r\n\t\t// 내 grow 재계산 (0 ~ containerCount로 클램프)\r\n\t\tconst nextGrowRaw = mathGrow(size, parentSize, containerCount);\r\n\t\tconst nextGrow = Math.min(containerCount, Math.max(0, nextGrowRaw));\r\n\t\tconst currentGrow = getGrow(flexContainerNodeRef.current);\r\n\r\n\t\t// 미세 변화로 루프 도는 것 방지\r\n\t\tif (Math.abs(nextGrow - currentGrow) < 0.001) return;\r\n\r\n\t\tsetPrevGrowState(currentGrow);\r\n\t\tsetGrowState(nextGrow);\r\n\r\n\t\t// 형제 컨테이너 grow 재분배\r\n\t\tconst containers = [...(parent.children || [])].filter((el) => {\r\n\t\t\tconst item = el as HTMLElement;\r\n\t\t\treturn (\r\n\t\t\t\titem.hasAttribute(\"data-container_name\") &&\r\n\t\t\t\t!item.classList.contains(styles[\"flex-resize-panel\"])\r\n\t\t\t);\r\n\t\t}) as HTMLElement[];\r\n\r\n\t\tconst siblings = containers.filter(\r\n\t\t\t(el) => el !== (flexContainerNodeRef.current as HTMLElement),\r\n\t\t);\r\n\r\n\t\t// 닫힌 컨테이너는 건드리지 않음\r\n\t\tconst adjustable = siblings.filter((el) => el.style.flex !== \"0 1 0%\");\r\n\r\n\t\tconst remaining = containerCount - nextGrow;\r\n\t\tif (remaining <= 0 || adjustable.length === 0) return;\r\n\r\n\t\tconst oldSum = adjustable.reduce((sum, el) => sum + getGrow(el), 0);\r\n\r\n\t\tif (oldSum <= 0) {\r\n\t\t\t// 기존 grow 합이 0이면 균등분배\r\n\t\t\tconst each = remaining / adjustable.length;\r\n\t\t\tadjustable.forEach((el) => {\r\n\t\t\t\tel.dataset.grow = each.toString();\r\n\t\t\t\tel.style.flex = `${each} 1 0%`;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\t// 기존 grow 비율대로 스케일링\r\n\t\t\tadjustable.forEach((el) => {\r\n\t\t\t\tconst g = getGrow(el);\r\n\t\t\t\tconst scaled = remaining * (g / oldSum);\r\n\t\t\t\tel.dataset.grow = scaled.toString();\r\n\t\t\t\tel.style.flex = `${scaled} 1 0%`;\r\n\t\t\t});\r\n\t\t}\r\n\t}, [size, isFitContent, fitContent, containerCount]);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<div\r\n\t\t\t\tid={containerName}\r\n\t\t\t\tdata-container_name={containerName}\r\n\t\t\t\tref={flexContainerRef}\r\n\t\t\t\tclassName={`${styles[\"flex-container\"]} ${className && className !== \"\" ? className : \"\"}`}\r\n\t\t\t\t{...(growState !== undefined\r\n\t\t\t\t\t? { [\"data-grow\"]: growState }\r\n\t\t\t\t\t: {})}\r\n\t\t\t\t{...(prevGrowState != undefined\r\n\t\t\t\t\t? { [\"data-prev_grow\"]: prevGrowState }\r\n\t\t\t\t\t: {})}\r\n\t\t\t\tdata-is_resize={isInitialResizable}\r\n\t\t\t\tdata-is_resize_panel={isResizePanel}\r\n\t\t\t\tstyle={\r\n\t\t\t\t\t(growState !== undefined && {\r\n\t\t\t\t\t\tflex: `${growState} 1 0%`,\r\n\t\t\t\t\t}) ||\r\n\t\t\t\t\t{}\r\n\t\t\t\t}\r\n\t\t\t>\r\n\t\t\t\t{(isFitContent && (\r\n\t\t\t\t\t<div\r\n\t\t\t\t\t\tclassName={`${styles[\"flex-content-fit-wrapper\"]}`}\r\n\t\t\t\t\t\tref={ref}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{children}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)) ||\r\n\t\t\t\t\tchildren}\r\n\t\t\t</div>\r\n\t\t\t{isResizePanel && (\r\n\t\t\t\t<FlexLayoutResizePanel\r\n\t\t\t\t\tcontainerName={containerName}\r\n\t\t\t\t\tlayoutName={layoutName}\r\n\t\t\t\t\tdirection={direction}\r\n\t\t\t\t\tcontainerCount={containerCount}\r\n\t\t\t\t\tpanelMode={panelMode}\r\n\t\t\t\t\tpanelClassName={panelClassName}\r\n\t\t\t\t\tpanelMovementMode={panelMovementMode}\r\n\t\t\t\t\tonResizingChange={handleResizingChange}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\t\t</>\r\n\t);\r\n}\r\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
"use client";
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
var FlexLayoutIFramePane_exports = {};
|
|
21
|
+
__export(FlexLayoutIFramePane_exports, {
|
|
22
|
+
FlexLayoutIFramePane: () => FlexLayoutIFramePane
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(FlexLayoutIFramePane_exports);
|
|
25
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
26
|
+
var import_react = require("react");
|
|
27
|
+
var import_rxjs = require("rxjs");
|
|
28
|
+
var import_hooks = require("../hooks");
|
|
29
|
+
function FlexLayoutIFramePane({
|
|
30
|
+
url,
|
|
31
|
+
screenKey
|
|
32
|
+
}) {
|
|
33
|
+
const [blockPointer, setBlockPointer] = (0, import_react.useState)(false);
|
|
34
|
+
(0, import_react.useEffect)(() => {
|
|
35
|
+
const draggingSubject = import_hooks.dragStateSubject.pipe(
|
|
36
|
+
(0, import_rxjs.map)((s) => !!s?.isDragging),
|
|
37
|
+
(0, import_rxjs.startWith)(false),
|
|
38
|
+
(0, import_rxjs.distinctUntilChanged)()
|
|
39
|
+
);
|
|
40
|
+
const sub = (0, import_rxjs.combineLatest)([draggingSubject, import_hooks.isResizingSubject]).pipe(
|
|
41
|
+
(0, import_rxjs.map)(([dragging, resizing]) => dragging || resizing),
|
|
42
|
+
(0, import_rxjs.distinctUntilChanged)()
|
|
43
|
+
).subscribe(setBlockPointer);
|
|
44
|
+
return () => sub.unsubscribe();
|
|
45
|
+
}, []);
|
|
46
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
47
|
+
"iframe",
|
|
48
|
+
{
|
|
49
|
+
src: url,
|
|
50
|
+
style: {
|
|
51
|
+
width: "100%",
|
|
52
|
+
height: "100%",
|
|
53
|
+
border: 0,
|
|
54
|
+
//리사이즈 및 드래깅 중 ifram이 이벤트 못먹게 방지
|
|
55
|
+
pointerEvents: blockPointer ? "none" : "auto"
|
|
56
|
+
},
|
|
57
|
+
sandbox: "allow-same-origin allow-scripts allow-forms allow-popups",
|
|
58
|
+
referrerPolicy: "no-referrer",
|
|
59
|
+
loading: "lazy"
|
|
60
|
+
},
|
|
61
|
+
screenKey
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
65
|
+
0 && (module.exports = {
|
|
66
|
+
FlexLayoutIFramePane
|
|
67
|
+
});
|
|
68
|
+
//# sourceMappingURL=FlexLayoutIFramePane.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/flex-layout/components/FlexLayoutIFramePane.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { combineLatest, distinctUntilChanged, map, startWith } from \"rxjs\";\r\nimport { dragStateSubject, isResizingSubject } from \"../hooks\";\r\n\r\nexport function FlexLayoutIFramePane({\r\n\turl,\r\n\tscreenKey,\r\n}: {\r\n\turl: string;\r\n\tscreenKey?: string;\r\n}) {\r\n\tconst [blockPointer, setBlockPointer] = useState(false);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst draggingSubject = dragStateSubject.pipe(\r\n\t\t\tmap((s) => !!s?.isDragging),\r\n\t\t\tstartWith(false),\r\n\t\t\tdistinctUntilChanged(),\r\n\t\t);\r\n\r\n\t\tconst sub = combineLatest([draggingSubject, isResizingSubject])\r\n\t\t\t.pipe(\r\n\t\t\t\tmap(([dragging, resizing]) => dragging || resizing),\r\n\t\t\t\tdistinctUntilChanged(),\r\n\t\t\t)\r\n\t\t\t.subscribe(setBlockPointer);\r\n\r\n\t\treturn () => sub.unsubscribe();\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t<iframe\r\n\t\t\tkey={screenKey}\r\n\t\t\tsrc={url}\r\n\t\t\tstyle={{\r\n\t\t\t\twidth: \"100%\",\r\n\t\t\t\theight: \"100%\",\r\n\t\t\t\tborder: 0,\r\n\t\t\t\t//리사이즈 및 드래깅 중 ifram이 이벤트 못먹게 방지\r\n\t\t\t\tpointerEvents: blockPointer ? \"none\" : \"auto\",\r\n\t\t\t}}\r\n\t\t\tsandbox=\"allow-same-origin allow-scripts allow-forms allow-popups\"\r\n\t\t\treferrerPolicy=\"no-referrer\"\r\n\t\t\tloading=\"lazy\"\r\n\t\t/>\r\n\t);\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAiCE;AA/BF,mBAAoC;AACpC,kBAAoE;AACpE,mBAAoD;AAE7C,SAAS,qBAAqB;AAAA,EACpC;AAAA,EACA;AACD,GAGG;AACF,QAAM,CAAC,cAAc,eAAe,QAAI,uBAAS,KAAK;AAEtD,8BAAU,MAAM;AACf,UAAM,kBAAkB,8BAAiB;AAAA,UACxC,iBAAI,CAAC,MAAM,CAAC,CAAC,GAAG,UAAU;AAAA,UAC1B,uBAAU,KAAK;AAAA,UACf,kCAAqB;AAAA,IACtB;AAEA,UAAM,UAAM,2BAAc,CAAC,iBAAiB,8BAAiB,CAAC,EAC5D;AAAA,UACA,iBAAI,CAAC,CAAC,UAAU,QAAQ,MAAM,YAAY,QAAQ;AAAA,UAClD,kCAAqB;AAAA,IACtB,EACC,UAAU,eAAe;AAE3B,WAAO,MAAM,IAAI,YAAY;AAAA,EAC9B,GAAG,CAAC,CAAC;AAEL,SACC;AAAA,IAAC;AAAA;AAAA,MAEA,KAAK;AAAA,MACL,OAAO;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA;AAAA,QAER,eAAe,eAAe,SAAS;AAAA,MACxC;AAAA,MACA,SAAQ;AAAA,MACR,gBAAe;AAAA,MACf,SAAQ;AAAA;AAAA,IAXH;AAAA,EAYN;AAEF;","names":[]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useState } from "react";
|
|
4
|
+
import { combineLatest, distinctUntilChanged, map, startWith } from "rxjs";
|
|
5
|
+
import { dragStateSubject, isResizingSubject } from "../hooks";
|
|
6
|
+
function FlexLayoutIFramePane({
|
|
7
|
+
url,
|
|
8
|
+
screenKey
|
|
9
|
+
}) {
|
|
10
|
+
const [blockPointer, setBlockPointer] = useState(false);
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
const draggingSubject = dragStateSubject.pipe(
|
|
13
|
+
map((s) => !!s?.isDragging),
|
|
14
|
+
startWith(false),
|
|
15
|
+
distinctUntilChanged()
|
|
16
|
+
);
|
|
17
|
+
const sub = combineLatest([draggingSubject, isResizingSubject]).pipe(
|
|
18
|
+
map(([dragging, resizing]) => dragging || resizing),
|
|
19
|
+
distinctUntilChanged()
|
|
20
|
+
).subscribe(setBlockPointer);
|
|
21
|
+
return () => sub.unsubscribe();
|
|
22
|
+
}, []);
|
|
23
|
+
return /* @__PURE__ */ jsx(
|
|
24
|
+
"iframe",
|
|
25
|
+
{
|
|
26
|
+
src: url,
|
|
27
|
+
style: {
|
|
28
|
+
width: "100%",
|
|
29
|
+
height: "100%",
|
|
30
|
+
border: 0,
|
|
31
|
+
//리사이즈 및 드래깅 중 ifram이 이벤트 못먹게 방지
|
|
32
|
+
pointerEvents: blockPointer ? "none" : "auto"
|
|
33
|
+
},
|
|
34
|
+
sandbox: "allow-same-origin allow-scripts allow-forms allow-popups",
|
|
35
|
+
referrerPolicy: "no-referrer",
|
|
36
|
+
loading: "lazy"
|
|
37
|
+
},
|
|
38
|
+
screenKey
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
export {
|
|
42
|
+
FlexLayoutIFramePane
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=FlexLayoutIFramePane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/flex-layout/components/FlexLayoutIFramePane.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { combineLatest, distinctUntilChanged, map, startWith } from \"rxjs\";\r\nimport { dragStateSubject, isResizingSubject } from \"../hooks\";\r\n\r\nexport function FlexLayoutIFramePane({\r\n\turl,\r\n\tscreenKey,\r\n}: {\r\n\turl: string;\r\n\tscreenKey?: string;\r\n}) {\r\n\tconst [blockPointer, setBlockPointer] = useState(false);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst draggingSubject = dragStateSubject.pipe(\r\n\t\t\tmap((s) => !!s?.isDragging),\r\n\t\t\tstartWith(false),\r\n\t\t\tdistinctUntilChanged(),\r\n\t\t);\r\n\r\n\t\tconst sub = combineLatest([draggingSubject, isResizingSubject])\r\n\t\t\t.pipe(\r\n\t\t\t\tmap(([dragging, resizing]) => dragging || resizing),\r\n\t\t\t\tdistinctUntilChanged(),\r\n\t\t\t)\r\n\t\t\t.subscribe(setBlockPointer);\r\n\r\n\t\treturn () => sub.unsubscribe();\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t<iframe\r\n\t\t\tkey={screenKey}\r\n\t\t\tsrc={url}\r\n\t\t\tstyle={{\r\n\t\t\t\twidth: \"100%\",\r\n\t\t\t\theight: \"100%\",\r\n\t\t\t\tborder: 0,\r\n\t\t\t\t//리사이즈 및 드래깅 중 ifram이 이벤트 못먹게 방지\r\n\t\t\t\tpointerEvents: blockPointer ? \"none\" : \"auto\",\r\n\t\t\t}}\r\n\t\t\tsandbox=\"allow-same-origin allow-scripts allow-forms allow-popups\"\r\n\t\t\treferrerPolicy=\"no-referrer\"\r\n\t\t\tloading=\"lazy\"\r\n\t\t/>\r\n\t);\r\n}\r\n"],"mappings":";AAiCE;AA/BF,SAAS,WAAW,gBAAgB;AACpC,SAAS,eAAe,sBAAsB,KAAK,iBAAiB;AACpE,SAAS,kBAAkB,yBAAyB;AAE7C,SAAS,qBAAqB;AAAA,EACpC;AAAA,EACA;AACD,GAGG;AACF,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,KAAK;AAEtD,YAAU,MAAM;AACf,UAAM,kBAAkB,iBAAiB;AAAA,MACxC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,UAAU;AAAA,MAC1B,UAAU,KAAK;AAAA,MACf,qBAAqB;AAAA,IACtB;AAEA,UAAM,MAAM,cAAc,CAAC,iBAAiB,iBAAiB,CAAC,EAC5D;AAAA,MACA,IAAI,CAAC,CAAC,UAAU,QAAQ,MAAM,YAAY,QAAQ;AAAA,MAClD,qBAAqB;AAAA,IACtB,EACC,UAAU,eAAe;AAE3B,WAAO,MAAM,IAAI,YAAY;AAAA,EAC9B,GAAG,CAAC,CAAC;AAEL,SACC;AAAA,IAAC;AAAA;AAAA,MAEA,KAAK;AAAA,MACL,OAAO;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA;AAAA,QAER,eAAe,eAAe,SAAS;AAAA,MACxC;AAAA,MACA,SAAQ;AAAA,MACR,gBAAe;AAAA,MACf,SAAQ;AAAA;AAAA,IAXH;AAAA,EAYN;AAEF;","names":[]}
|
|
@@ -1,15 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
"use client";
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all)
|
|
11
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from))
|
|
16
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
17
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
18
|
+
}
|
|
19
|
+
return to;
|
|
20
|
+
};
|
|
21
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
22
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
23
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
24
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
25
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
26
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
27
|
+
mod
|
|
28
|
+
));
|
|
29
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
30
|
+
var FlexLayoutResizePanel_exports = {};
|
|
31
|
+
__export(FlexLayoutResizePanel_exports, {
|
|
32
|
+
default: () => FlexLayoutResizePanel
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(FlexLayoutResizePanel_exports);
|
|
35
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
36
|
+
var import_react = require("react");
|
|
37
|
+
var import_hooks = require("../hooks");
|
|
38
|
+
var import_FlexLayoutContainerStore = require("../store/FlexLayoutContainerStore");
|
|
39
|
+
var import_FlexLayout = __toESM(require("../styles/FlexLayout.module.css"), 1);
|
|
40
|
+
var import_FlexLayoutUtils = require("../utils/FlexLayoutUtils");
|
|
13
41
|
const flexDirectionModel = {
|
|
14
42
|
row: {
|
|
15
43
|
xy: "x",
|
|
@@ -33,33 +61,36 @@ function FlexLayoutResizePanel({
|
|
|
33
61
|
containerName,
|
|
34
62
|
layoutName,
|
|
35
63
|
panelClassName,
|
|
36
|
-
panelMovementMode
|
|
64
|
+
panelMovementMode,
|
|
65
|
+
onResizingChange
|
|
37
66
|
}) {
|
|
38
|
-
const directionRef =
|
|
39
|
-
const movementModeRef =
|
|
40
|
-
|
|
67
|
+
const directionRef = (0, import_react.useRef)(direction);
|
|
68
|
+
const movementModeRef = (0, import_react.useRef)(panelMovementMode);
|
|
69
|
+
(0, import_react.useEffect)(() => {
|
|
41
70
|
directionRef.current = direction;
|
|
42
71
|
}, [direction]);
|
|
43
|
-
|
|
72
|
+
(0, import_react.useEffect)(() => {
|
|
44
73
|
movementModeRef.current = panelMovementMode;
|
|
45
74
|
}, [panelMovementMode]);
|
|
46
|
-
const isResizePanelClickRef =
|
|
47
|
-
const prevTouchEventRef =
|
|
48
|
-
const parentSizeRef =
|
|
49
|
-
const totalMovementRef =
|
|
50
|
-
const containerCountRef =
|
|
51
|
-
const panelRef =
|
|
52
|
-
|
|
75
|
+
const isResizePanelClickRef = (0, import_react.useRef)(false);
|
|
76
|
+
const prevTouchEventRef = (0, import_react.useRef)(null);
|
|
77
|
+
const parentSizeRef = (0, import_react.useRef)(0);
|
|
78
|
+
const totalMovementRef = (0, import_react.useRef)(0);
|
|
79
|
+
const containerCountRef = (0, import_react.useRef)(containerCount);
|
|
80
|
+
const panelRef = (0, import_react.useRef)(null);
|
|
81
|
+
(0, import_react.useEffect)(() => {
|
|
53
82
|
return () => {
|
|
83
|
+
import_hooks.isResizingSubject.next(false);
|
|
54
84
|
document.body.style.cursor = "";
|
|
55
85
|
};
|
|
56
86
|
}, []);
|
|
57
|
-
|
|
87
|
+
(0, import_react.useEffect)(() => {
|
|
58
88
|
containerCountRef.current = containerCount;
|
|
59
89
|
}, [containerCount]);
|
|
60
90
|
const panelMouseDownEvent = (event) => {
|
|
61
91
|
if (!panelRef.current || !panelRef.current.parentElement) return;
|
|
62
92
|
isResizePanelClickRef.current = true;
|
|
93
|
+
onResizingChange?.(true);
|
|
63
94
|
containerCountRef.current = [
|
|
64
95
|
...panelRef.current.parentElement.children
|
|
65
96
|
].filter((e) => e.hasAttribute("data-container_name")).length;
|
|
@@ -67,14 +98,17 @@ function FlexLayoutResizePanel({
|
|
|
67
98
|
parentSizeRef.current = panelRef.current.parentElement.getBoundingClientRect()[sizeName];
|
|
68
99
|
prevTouchEventRef.current = null;
|
|
69
100
|
totalMovementRef.current = 0;
|
|
101
|
+
import_hooks.isResizingSubject.next(true);
|
|
70
102
|
if (!parentSizeRef.current) return;
|
|
71
103
|
document.body.style.cursor = flexDirectionModel[direction].resizeCursor;
|
|
72
104
|
};
|
|
73
105
|
const panelMouseUpEvent = () => {
|
|
74
106
|
isResizePanelClickRef.current = false;
|
|
107
|
+
onResizingChange?.(false);
|
|
75
108
|
parentSizeRef.current = 0;
|
|
76
109
|
totalMovementRef.current = 0;
|
|
77
110
|
prevTouchEventRef.current = null;
|
|
111
|
+
import_hooks.isResizingSubject.next(false);
|
|
78
112
|
document.body.style.cursor = "";
|
|
79
113
|
};
|
|
80
114
|
function moveMouseFlex(originTarget, resizePanel, moveEvent, dir, mode) {
|
|
@@ -83,13 +117,13 @@ function FlexLayoutResizePanel({
|
|
|
83
117
|
totalMovementRef.current += movement;
|
|
84
118
|
const minSizeName = "min-" + model.sizeName;
|
|
85
119
|
const maxSizeName = "max-" + model.sizeName;
|
|
86
|
-
let targetElement =
|
|
120
|
+
let targetElement = (0, import_FlexLayoutUtils.findNotCloseFlexContent)(
|
|
87
121
|
originTarget,
|
|
88
122
|
"previousElementSibling"
|
|
89
123
|
);
|
|
90
124
|
if (panelMovementMode === "divorce" && totalMovementRef.current > 0 || panelMovementMode === "bulldozer" && movement > 0 || !targetElement)
|
|
91
125
|
targetElement = originTarget;
|
|
92
|
-
let nextElement =
|
|
126
|
+
let nextElement = (0, import_FlexLayoutUtils.findNotCloseFlexContent)(
|
|
93
127
|
resizePanel.nextElementSibling,
|
|
94
128
|
"nextElementSibling"
|
|
95
129
|
);
|
|
@@ -112,10 +146,10 @@ function FlexLayoutResizePanel({
|
|
|
112
146
|
if (nextMaxSize > 0 && nextElementSize > nextMaxSize) {
|
|
113
147
|
return;
|
|
114
148
|
}
|
|
115
|
-
if (
|
|
149
|
+
if ((0, import_FlexLayoutUtils.isOverMove)(targetSize, targetMinSize)) {
|
|
116
150
|
targetSize = 0;
|
|
117
151
|
nextElementSize = nextRect[model.sizeName];
|
|
118
|
-
} else if (
|
|
152
|
+
} else if ((0, import_FlexLayoutUtils.isOverMove)(nextElementSize, nextMinSize)) {
|
|
119
153
|
nextElementSize = 0;
|
|
120
154
|
targetSize = targetRect[model.sizeName];
|
|
121
155
|
}
|
|
@@ -126,14 +160,14 @@ function FlexLayoutResizePanel({
|
|
|
126
160
|
targetElement.style.flex = `${targetFlexGrow} 1 0%`;
|
|
127
161
|
nextElement.style.flex = `${nextElementFlexGrow} 1 0%`;
|
|
128
162
|
}
|
|
129
|
-
|
|
163
|
+
(0, import_react.useEffect)(() => {
|
|
130
164
|
const addGlobalMoveEvent = (event) => {
|
|
131
165
|
if (!isResizePanelClickRef.current || !panelRef.current) {
|
|
132
166
|
return;
|
|
133
167
|
}
|
|
134
168
|
event.preventDefault();
|
|
135
169
|
const dir = directionRef.current;
|
|
136
|
-
movementModeRef.current;
|
|
170
|
+
const mode = movementModeRef.current;
|
|
137
171
|
const targetElement = panelRef.current.previousElementSibling;
|
|
138
172
|
const targetPanel = panelRef.current;
|
|
139
173
|
if (!targetElement || !targetPanel) return;
|
|
@@ -151,42 +185,62 @@ function FlexLayoutResizePanel({
|
|
|
151
185
|
move.movementX = event.movementX;
|
|
152
186
|
move.movementY = event.movementY;
|
|
153
187
|
}
|
|
154
|
-
moveMouseFlex(targetElement, targetPanel, move, dir);
|
|
188
|
+
moveMouseFlex(targetElement, targetPanel, move, dir, mode);
|
|
155
189
|
};
|
|
156
190
|
["mousemove", "touchmove"].forEach((eventName) => {
|
|
157
191
|
window.addEventListener(eventName, addGlobalMoveEvent, {
|
|
158
192
|
passive: false
|
|
159
193
|
});
|
|
160
194
|
});
|
|
161
|
-
[
|
|
195
|
+
[
|
|
196
|
+
"mouseup",
|
|
197
|
+
"touchend",
|
|
198
|
+
"touchcancel",
|
|
199
|
+
// 터치 제스처 시스템 인터럽트
|
|
200
|
+
"pointerup",
|
|
201
|
+
// 범용 포인터 이벤트
|
|
202
|
+
"pointercancel",
|
|
203
|
+
"blur"
|
|
204
|
+
// 윈도우 포커스 아웃 (Alt+Tab 등)
|
|
205
|
+
].forEach((eventName) => {
|
|
162
206
|
window.addEventListener(eventName, panelMouseUpEvent);
|
|
163
207
|
});
|
|
164
208
|
return () => {
|
|
165
209
|
["mousemove", "touchmove"].forEach((eventName) => {
|
|
166
210
|
window.removeEventListener(eventName, addGlobalMoveEvent);
|
|
167
211
|
});
|
|
168
|
-
[
|
|
212
|
+
[
|
|
213
|
+
"mouseup",
|
|
214
|
+
"touchend",
|
|
215
|
+
"touchcancel",
|
|
216
|
+
// 터치 제스처 시스템 인터럽트
|
|
217
|
+
"pointerup",
|
|
218
|
+
// 범용 포인터 이벤트
|
|
219
|
+
"pointercancel",
|
|
220
|
+
"blur"
|
|
221
|
+
// 윈도우 포커스 아웃 (Alt+Tab 등)
|
|
222
|
+
].forEach((eventName) => {
|
|
169
223
|
window.removeEventListener(eventName, panelMouseUpEvent);
|
|
170
224
|
});
|
|
171
225
|
};
|
|
172
226
|
}, []);
|
|
173
|
-
|
|
227
|
+
(0, import_react.useEffect)(() => {
|
|
174
228
|
if (!panelRef.current) return;
|
|
175
|
-
|
|
229
|
+
(0, import_FlexLayoutContainerStore.setResizePanelRef)(layoutName, containerName, panelRef);
|
|
230
|
+
return () => {
|
|
231
|
+
(0, import_FlexLayoutContainerStore.setResizePanelRef)(layoutName, containerName, null);
|
|
232
|
+
};
|
|
176
233
|
}, [containerName, layoutName]);
|
|
177
|
-
return /* @__PURE__ */
|
|
234
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
178
235
|
"div",
|
|
179
236
|
{
|
|
180
237
|
id: containerName + "_resize_panel",
|
|
181
|
-
className: `${
|
|
238
|
+
className: `${import_FlexLayout.default["flex-resize-panel"]} ${import_FlexLayout.default[panelMode]} ${panelClassName && panelClassName !== "" ? panelClassName : ""}`,
|
|
182
239
|
ref: panelRef,
|
|
183
240
|
onMouseDown: panelMouseDownEvent,
|
|
184
241
|
onTouchStart: panelMouseDownEvent,
|
|
185
|
-
children: /* @__PURE__ */
|
|
242
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: import_FlexLayout.default.hover })
|
|
186
243
|
}
|
|
187
244
|
);
|
|
188
245
|
}
|
|
189
|
-
|
|
190
|
-
module.exports = FlexLayoutResizePanel;
|
|
191
|
-
//# sourceMappingURL=FlexLayoutResizePanel.cjs.map
|
|
192
246
|
//# sourceMappingURL=FlexLayoutResizePanel.cjs.map
|