@byeolnaerim/flex-layout 0.0.9 → 0.0.10

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.
Files changed (122) hide show
  1. package/dist/flex-layout/components/FlexLayout.cjs +1 -110
  2. package/dist/flex-layout/components/FlexLayout.js +1 -85
  3. package/dist/flex-layout/components/FlexLayoutContainer.cjs +1 -262
  4. package/dist/flex-layout/components/FlexLayoutContainer.js +1 -232
  5. package/dist/flex-layout/components/FlexLayoutIFramePane.cjs +1 -68
  6. package/dist/flex-layout/components/FlexLayoutIFramePane.js +1 -44
  7. package/dist/flex-layout/components/FlexLayoutResizePanel.cjs +1 -246
  8. package/dist/flex-layout/components/FlexLayoutResizePanel.js +1 -216
  9. package/dist/flex-layout/components/FlexLayoutSplitScreen.cjs +1 -1252
  10. package/dist/flex-layout/components/FlexLayoutSplitScreen.js +1 -1236
  11. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBox.cjs +1 -532
  12. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBox.js +1 -509
  13. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxContainer.cjs +1 -55
  14. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxContainer.js +1 -25
  15. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxItem.cjs +1 -63
  16. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxItem.js +1 -33
  17. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxTitleMore.cjs +1 -53
  18. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxTitleMore.js +1 -23
  19. package/dist/flex-layout/components/FlexLayoutSplitScreenScrollBox.cjs +1 -133
  20. package/dist/flex-layout/components/FlexLayoutSplitScreenScrollBox.js +1 -107
  21. package/dist/flex-layout/components/FlexLayoutStickyBox.cjs +1 -245
  22. package/dist/flex-layout/components/FlexLayoutStickyBox.js +1 -229
  23. package/dist/flex-layout/components/index.cjs +1 -57
  24. package/dist/flex-layout/components/index.js +1 -17
  25. package/dist/flex-layout/hooks/index.cjs +1 -25
  26. package/dist/flex-layout/hooks/index.js +1 -3
  27. package/dist/flex-layout/hooks/useDrag.cjs +1 -289
  28. package/dist/flex-layout/hooks/useDrag.d.ts +15 -0
  29. package/dist/flex-layout/hooks/useDrag.js +1 -258
  30. package/dist/flex-layout/hooks/useFlexLayoutSplitScreen.cjs +1 -139
  31. package/dist/flex-layout/hooks/useFlexLayoutSplitScreen.js +1 -118
  32. package/dist/flex-layout/hooks/useListPaging.cjs +1 -212
  33. package/dist/flex-layout/hooks/useListPaging.js +1 -191
  34. package/dist/flex-layout/hooks/useSizes.cjs +1 -126
  35. package/dist/flex-layout/hooks/useSizes.js +1 -101
  36. package/dist/flex-layout/index.cjs +1 -31
  37. package/dist/flex-layout/index.js +1 -6
  38. package/dist/flex-layout/providers/FlexLayoutContext.cjs +1 -49
  39. package/dist/flex-layout/providers/FlexLayoutContext.js +1 -24
  40. package/dist/flex-layout/providers/FlexLayoutHooks.cjs +1 -276
  41. package/dist/flex-layout/providers/FlexLayoutHooks.d.ts +5 -1
  42. package/dist/flex-layout/providers/FlexLayoutHooks.js +1 -263
  43. package/dist/flex-layout/providers/index.cjs +1 -23
  44. package/dist/flex-layout/providers/index.js +1 -2
  45. package/dist/flex-layout/store/FlexLayoutContainerStore.cjs +1 -257
  46. package/dist/flex-layout/store/FlexLayoutContainerStore.js +1 -206
  47. package/dist/flex-layout/store/index.cjs +1 -23
  48. package/dist/flex-layout/store/index.js +1 -2
  49. package/dist/flex-layout/styles/FlexLayout.module.css +473 -416
  50. package/dist/flex-layout/types/FlexDirectionTypes.cjs +1 -17
  51. package/dist/flex-layout/types/FlexDirectionTypes.js +0 -1
  52. package/dist/flex-layout/types/FlexLayoutTypes.cjs +1 -17
  53. package/dist/flex-layout/types/FlexLayoutTypes.js +0 -1
  54. package/dist/flex-layout/utils/FlexLayoutUtils.cjs +1 -245
  55. package/dist/flex-layout/utils/FlexLayoutUtils.js +1 -211
  56. package/dist/flex-layout/utils/index.cjs +1 -23
  57. package/dist/flex-layout/utils/index.js +1 -2
  58. package/dist/index.cjs +1 -23
  59. package/dist/index.js +1 -2
  60. package/dist/types/css.d.cjs +0 -1
  61. package/dist/types/css.d.js +0 -1
  62. package/package.json +116 -113
  63. package/dist/flex-layout/components/FlexLayout.cjs.map +0 -1
  64. package/dist/flex-layout/components/FlexLayout.js.map +0 -1
  65. package/dist/flex-layout/components/FlexLayoutContainer.cjs.map +0 -1
  66. package/dist/flex-layout/components/FlexLayoutContainer.js.map +0 -1
  67. package/dist/flex-layout/components/FlexLayoutIFramePane.cjs.map +0 -1
  68. package/dist/flex-layout/components/FlexLayoutIFramePane.js.map +0 -1
  69. package/dist/flex-layout/components/FlexLayoutResizePanel.cjs.map +0 -1
  70. package/dist/flex-layout/components/FlexLayoutResizePanel.js.map +0 -1
  71. package/dist/flex-layout/components/FlexLayoutSplitScreen.cjs.map +0 -1
  72. package/dist/flex-layout/components/FlexLayoutSplitScreen.js.map +0 -1
  73. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBox.cjs.map +0 -1
  74. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBox.js.map +0 -1
  75. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxContainer.cjs.map +0 -1
  76. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxContainer.js.map +0 -1
  77. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxItem.cjs.map +0 -1
  78. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxItem.js.map +0 -1
  79. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxTitleMore.cjs.map +0 -1
  80. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxTitleMore.js.map +0 -1
  81. package/dist/flex-layout/components/FlexLayoutSplitScreenScrollBox.cjs.map +0 -1
  82. package/dist/flex-layout/components/FlexLayoutSplitScreenScrollBox.js.map +0 -1
  83. package/dist/flex-layout/components/FlexLayoutStickyBox.cjs.map +0 -1
  84. package/dist/flex-layout/components/FlexLayoutStickyBox.js.map +0 -1
  85. package/dist/flex-layout/components/index.cjs.map +0 -1
  86. package/dist/flex-layout/components/index.js.map +0 -1
  87. package/dist/flex-layout/hooks/index.cjs.map +0 -1
  88. package/dist/flex-layout/hooks/index.js.map +0 -1
  89. package/dist/flex-layout/hooks/useDrag.cjs.map +0 -1
  90. package/dist/flex-layout/hooks/useDrag.js.map +0 -1
  91. package/dist/flex-layout/hooks/useFlexLayoutSplitScreen.cjs.map +0 -1
  92. package/dist/flex-layout/hooks/useFlexLayoutSplitScreen.js.map +0 -1
  93. package/dist/flex-layout/hooks/useListPaging.cjs.map +0 -1
  94. package/dist/flex-layout/hooks/useListPaging.js.map +0 -1
  95. package/dist/flex-layout/hooks/useSizes.cjs.map +0 -1
  96. package/dist/flex-layout/hooks/useSizes.js.map +0 -1
  97. package/dist/flex-layout/index.cjs.map +0 -1
  98. package/dist/flex-layout/index.js.map +0 -1
  99. package/dist/flex-layout/providers/FlexLayoutContext.cjs.map +0 -1
  100. package/dist/flex-layout/providers/FlexLayoutContext.js.map +0 -1
  101. package/dist/flex-layout/providers/FlexLayoutHooks.cjs.map +0 -1
  102. package/dist/flex-layout/providers/FlexLayoutHooks.js.map +0 -1
  103. package/dist/flex-layout/providers/index.cjs.map +0 -1
  104. package/dist/flex-layout/providers/index.js.map +0 -1
  105. package/dist/flex-layout/store/FlexLayoutContainerStore.cjs.map +0 -1
  106. package/dist/flex-layout/store/FlexLayoutContainerStore.js.map +0 -1
  107. package/dist/flex-layout/store/index.cjs.map +0 -1
  108. package/dist/flex-layout/store/index.js.map +0 -1
  109. package/dist/flex-layout/types/FlexDirectionTypes.cjs.map +0 -1
  110. package/dist/flex-layout/types/FlexDirectionTypes.js.map +0 -1
  111. package/dist/flex-layout/types/FlexLayoutTypes.cjs.map +0 -1
  112. package/dist/flex-layout/types/FlexLayoutTypes.js.map +0 -1
  113. package/dist/flex-layout/utils/FlexLayoutUtils.cjs.map +0 -1
  114. package/dist/flex-layout/utils/FlexLayoutUtils.js.map +0 -1
  115. package/dist/flex-layout/utils/index.cjs.map +0 -1
  116. package/dist/flex-layout/utils/index.js.map +0 -1
  117. package/dist/index.cjs.map +0 -1
  118. package/dist/index.js.map +0 -1
  119. package/dist/metafile-cjs.json +0 -1
  120. package/dist/metafile-esm.json +0 -1
  121. package/dist/types/css.d.cjs.map +0 -1
  122. package/dist/types/css.d.js.map +0 -1
@@ -1,1252 +1 @@
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 FlexLayoutSplitScreen_exports = {};
31
- __export(FlexLayoutSplitScreen_exports, {
32
- default: () => FlexLayoutSplitScreen
33
- });
34
- module.exports = __toCommonJS(FlexLayoutSplitScreen_exports);
35
- var import_jsx_runtime = require("react/jsx-runtime");
36
- var import_react = require("react");
37
- var import_useDrag = require("../hooks/useDrag");
38
- var import_useFlexLayoutSplitScreen = require("../hooks/useFlexLayoutSplitScreen");
39
- var import_FlexLayoutContainerStore = require("../store/FlexLayoutContainerStore");
40
- var import_FlexLayout = __toESM(require("../styles/FlexLayout.module.css"), 1);
41
- var import_FlexLayout2 = __toESM(require("./FlexLayout"), 1);
42
- var import_FlexLayoutContainer = __toESM(require("./FlexLayoutContainer"), 1);
43
- var import_FlexLayoutSplitScreenDragBox = __toESM(require("./FlexLayoutSplitScreenDragBox"), 1);
44
- var import_fast_deep_equal = __toESM(require("fast-deep-equal"), 1);
45
- var import_rxjs = require("rxjs");
46
- var import_FlexLayoutSplitScreenDragBoxContainer = __toESM(require("./FlexLayoutSplitScreenDragBoxContainer"), 1);
47
- var import_FlexLayoutSplitScreenDragBoxItem = __toESM(require("./FlexLayoutSplitScreenDragBoxItem"), 1);
48
- var import_FlexLayoutSplitScreenDragBoxTitleMore = __toESM(require("./FlexLayoutSplitScreenDragBoxTitleMore"), 1);
49
- var import_FlexLayoutSplitScreenScrollBox = __toESM(require("./FlexLayoutSplitScreenScrollBox"), 1);
50
- function isOverDrop({
51
- x,
52
- y,
53
- element
54
- }) {
55
- const {
56
- x: elementX,
57
- y: elementY,
58
- right: elementRight,
59
- bottom: elementBottom
60
- } = element.getBoundingClientRect();
61
- const isElementOver = x < elementX || x > elementRight || y < elementY || y > elementBottom;
62
- return isElementOver;
63
- }
64
- function isInnerDrop({
65
- x,
66
- y,
67
- element
68
- }) {
69
- const {
70
- x: elementX,
71
- y: elementY,
72
- right: elementRight,
73
- bottom: elementBottom
74
- } = element.getBoundingClientRect();
75
- const isElementInner = x >= elementX && x <= elementRight && y >= elementY && y <= elementBottom;
76
- return isElementInner;
77
- }
78
- const handleUpdateDropTargetComponents = ({
79
- orderName,
80
- parentOrderName,
81
- containerName,
82
- parentLayoutName,
83
- layoutName,
84
- dropComponent,
85
- navigationTitle,
86
- nextContainerName,
87
- isUsePrefix = true,
88
- beforeDropTargetComponent,
89
- afterDropTargetComponent,
90
- centerDropTargetComponent,
91
- dropDocumentOutsideOption,
92
- screenKey = Array.from(
93
- window.crypto.getRandomValues(new Uint32Array(16)),
94
- (e) => e.toString(32).padStart(2, "0")
95
- ).join("")
96
- }) => {
97
- const nextContainerNameOrderName = parentOrderName ? parentOrderName : orderName;
98
- let listMap;
99
- let list;
100
- let key;
101
- if (nextContainerNameOrderName === orderName || nextContainerNameOrderName === "center") {
102
- listMap = orderName === "before" ? { beforeDropTargetComponent } : orderName === "after" ? { afterDropTargetComponent } : {
103
- centerDropTargetComponent: centerDropTargetComponent.filter(
104
- (e) => !e.containerName.split("_").at(0).startsWith(
105
- containerName.split("_").at(0)
106
- )
107
- )
108
- };
109
- } else {
110
- listMap = nextContainerNameOrderName === "before" ? { beforeDropTargetComponent } : { afterDropTargetComponent };
111
- }
112
- const entries = Object.entries(listMap)[0];
113
- key = entries[0];
114
- list = entries[1];
115
- const newComponent = {
116
- containerName: `${containerName + "_" + layoutName}${isUsePrefix ? "_" + orderName + "-" + list.length : ""}`,
117
- component: (0, import_react.cloneElement)(
118
- dropComponent,
119
- { key: screenKey, screenKey }
120
- ),
121
- navigationTitle,
122
- dropDocumentOutsideOption,
123
- screenKey: screenKey || Array.from(
124
- window.crypto.getRandomValues(new Uint32Array(16)),
125
- (e) => e.toString(32).padStart(2, "0")
126
- ).join("")
127
- };
128
- let allComponents;
129
- if (nextContainerName) {
130
- const index = list.findIndex(
131
- (item) => item.containerName === nextContainerName
132
- );
133
- if (index !== -1) {
134
- if (nextContainerNameOrderName === orderName) {
135
- if (orderName === "before") {
136
- allComponents = [
137
- ...list.slice(0, index),
138
- newComponent,
139
- ...list.slice(index)
140
- ];
141
- } else {
142
- allComponents = [
143
- ...list.slice(0, index + 1),
144
- newComponent,
145
- ...list.slice(index + 1)
146
- ];
147
- }
148
- } else {
149
- if (nextContainerNameOrderName === "after" && orderName === "before") {
150
- allComponents = [
151
- ...list.slice(0, index),
152
- newComponent,
153
- ...list.slice(index)
154
- ];
155
- } else if (nextContainerNameOrderName === "before" && orderName === "after") {
156
- allComponents = [
157
- ...list.slice(0, index + 1),
158
- newComponent,
159
- ...list.slice(index + 1)
160
- ];
161
- } else {
162
- if (orderName === "before") {
163
- allComponents = [
164
- ...list.slice(0, index),
165
- newComponent,
166
- ...list.slice(index)
167
- ];
168
- } else {
169
- allComponents = [
170
- ...list.slice(0, index + 1),
171
- newComponent,
172
- ...list.slice(index + 1)
173
- ];
174
- }
175
- }
176
- }
177
- } else {
178
- if (nextContainerNameOrderName === "center" && orderName === "after") {
179
- allComponents = [newComponent, ...list];
180
- } else if (nextContainerNameOrderName === "center" && orderName === "before") {
181
- allComponents = [...list, newComponent];
182
- } else {
183
- allComponents = orderName === "before" ? [newComponent, ...list] : [...list, newComponent];
184
- }
185
- }
186
- } else {
187
- allComponents = orderName === "before" ? [newComponent, ...list] : [...list, newComponent];
188
- }
189
- const seen = /* @__PURE__ */ new Set();
190
- const result = allComponents.filter((item) => {
191
- if (seen.has(item.containerName)) {
192
- return false;
193
- }
194
- seen.add(item.containerName);
195
- return true;
196
- });
197
- import_useDrag.dropMovementEventSubject.next({
198
- state: "append",
199
- targetParentLayoutName: parentLayoutName,
200
- targetLayoutName: layoutName,
201
- targetContainerName: containerName,
202
- orderName
203
- });
204
- return { [key]: result };
205
- };
206
- const handleRemove = (list, targetContainerName, orderNameSetter) => {
207
- const result = list.filter((e) => e.containerName !== targetContainerName);
208
- if (result.length != list.length)
209
- orderNameSetter(list.length - result.length);
210
- return result;
211
- };
212
- function getAdjacentItem(items, currentIndex) {
213
- if (currentIndex + 1 < items.length) {
214
- return {
215
- adjacentItem: items[currentIndex + 1],
216
- adjacentIndex: currentIndex + 1
217
- };
218
- } else if (currentIndex - 1 >= 0) {
219
- return {
220
- adjacentItem: items[currentIndex - 1],
221
- adjacentIndex: currentIndex - 1
222
- };
223
- }
224
- return { adjacentItem: null, adjacentIndex: currentIndex };
225
- }
226
- const getSelfOrderName = (containerName) => {
227
- const result = containerName.split("_").at(-1)?.split("-").at(0)?.split("=").at(0);
228
- if (["before", "center", "after"].some((e) => e === result)) {
229
- return result;
230
- } else {
231
- return;
232
- }
233
- };
234
- function FlexLayoutSplitScreen({
235
- children,
236
- containerName,
237
- layoutName,
238
- navigationTitle,
239
- dropDocumentOutsideOption,
240
- screenKey
241
- }) {
242
- const {
243
- direction,
244
- isSplit,
245
- boundaryContainerSize,
246
- afterDropTargetComponent,
247
- beforeDropTargetComponent,
248
- centerDropTargetComponent,
249
- setAfterDropTargetComponent,
250
- setBeforeDropTargetComponent,
251
- setCenterDropTargetComponent,
252
- layoutRef,
253
- setIsSplit,
254
- setDirection
255
- } = (0, import_useFlexLayoutSplitScreen.useFlexLayoutSplitScreen)({
256
- isSplitInitial: false,
257
- directionInitial: "row",
258
- selfContainerName: containerName,
259
- parentLayoutName: "",
260
- layoutName
261
- });
262
- (0, import_react.useEffect)(() => {
263
- (0, import_FlexLayoutContainerStore.resetRootSplitScreen)(layoutName);
264
- const subscribe = (0, import_FlexLayoutContainerStore.getSplitScreen)(layoutName, layoutName).subscribe((layoutInfo) => {
265
- if (layoutInfo) {
266
- setBeforeDropTargetComponent([
267
- ...layoutInfo.beforeDropTargetComponent
268
- ]);
269
- setAfterDropTargetComponent([
270
- ...layoutInfo.afterDropTargetComponent
271
- ]);
272
- setCenterDropTargetComponent([
273
- ...layoutInfo.centerDropTargetComponent
274
- ]);
275
- setDirection(layoutInfo.direction);
276
- if (layoutInfo.beforeDropTargetComponent.length !== 0 || layoutInfo.afterDropTargetComponent.length !== 0) {
277
- setIsSplit(true);
278
- }
279
- } else {
280
- (0, import_FlexLayoutContainerStore.setSplitScreen)(layoutName, layoutName, {
281
- afterDropTargetComponent: [],
282
- beforeDropTargetComponent: [],
283
- centerDropTargetComponent: [
284
- {
285
- containerName,
286
- component: children,
287
- navigationTitle,
288
- dropDocumentOutsideOption,
289
- screenKey: screenKey ? screenKey : Array.from(
290
- window.crypto.getRandomValues(
291
- new Uint32Array(16)
292
- ),
293
- (e) => e.toString(32).padStart(2, "0")
294
- ).join("")
295
- }
296
- ],
297
- direction
298
- });
299
- }
300
- });
301
- return () => {
302
- subscribe.unsubscribe();
303
- (0, import_FlexLayoutContainerStore.removeRootSplitScreen)(layoutName);
304
- };
305
- }, [layoutName, screenKey, navigationTitle, children, direction]);
306
- (0, import_react.useEffect)(() => {
307
- const subscribe = import_useDrag.dropMovementEventSubject.pipe(
308
- (0, import_rxjs.distinctUntilChanged)((prev, curr) => {
309
- const filterChildren = (obj) => {
310
- const {
311
- children: children2,
312
- component,
313
- targetComponent,
314
- x,
315
- y,
316
- ...rest
317
- } = obj || {};
318
- return rest;
319
- };
320
- return (0, import_fast_deep_equal.default)(filterChildren(prev), filterChildren(curr));
321
- })
322
- ).subscribe((event) => {
323
- if (event.state === "remove") {
324
- if (event.targetParentLayoutName === layoutName || event.targetParentLayoutName === "" && event.targetLayoutName === layoutName) {
325
- requestAnimationFrame(() => {
326
- let removeCallback = (removeOrderName) => {
327
- if (event.nextContainerName && event.dropTargetComponentEvent && event.targetComponent) {
328
- const targetComponentsMap = handleUpdateDropTargetComponents({
329
- orderName: removeOrderName,
330
- containerName: event.nextContainerName,
331
- parentLayoutName: "",
332
- layoutName,
333
- dropComponent: event.targetComponent,
334
- navigationTitle: event.dropTargetComponentEvent.navigationTitle,
335
- isUsePrefix: true,
336
- afterDropTargetComponent,
337
- beforeDropTargetComponent,
338
- centerDropTargetComponent,
339
- dropDocumentOutsideOption,
340
- screenKey: event.dropTargetComponentEvent.screenKey
341
- });
342
- (0, import_FlexLayoutContainerStore.setSplitScreen)(layoutName, layoutName, {
343
- ...(0, import_FlexLayoutContainerStore.getCurrentSplitScreenComponents)(
344
- layoutName,
345
- layoutName
346
- ) || {
347
- afterDropTargetComponent,
348
- beforeDropTargetComponent,
349
- centerDropTargetComponent,
350
- direction
351
- },
352
- ...targetComponentsMap
353
- });
354
- Promise.resolve().then(
355
- () => event.dropEndCallback && event.dropEndCallback({
356
- x: event.x,
357
- y: event.y,
358
- containerName
359
- })
360
- );
361
- }
362
- };
363
- const currentComponents = (0, import_FlexLayoutContainerStore.getCurrentSplitScreenComponents)(
364
- layoutName,
365
- layoutName
366
- );
367
- const afterList = handleRemove(
368
- currentComponents?.afterDropTargetComponent || afterDropTargetComponent,
369
- event.targetContainerName,
370
- () => removeCallback("after")
371
- );
372
- const beforList = handleRemove(
373
- currentComponents?.beforeDropTargetComponent || beforeDropTargetComponent,
374
- event.targetContainerName,
375
- () => removeCallback("before")
376
- );
377
- const centerList = handleRemove(
378
- currentComponents?.centerDropTargetComponent || centerDropTargetComponent,
379
- event.targetContainerName,
380
- () => removeCallback("center")
381
- );
382
- (0, import_FlexLayoutContainerStore.setSplitScreen)(layoutName, layoutName, {
383
- afterDropTargetComponent: afterList,
384
- beforeDropTargetComponent: beforList,
385
- centerDropTargetComponent: centerList,
386
- direction
387
- });
388
- });
389
- }
390
- } else if (event.state === "append") {
391
- const {
392
- x,
393
- y,
394
- dropEndCallback,
395
- dropTargetComponentEvent,
396
- orderName,
397
- parentOrderName,
398
- targetLayoutName,
399
- targetParentLayoutName,
400
- targetContainerName,
401
- targetComponent,
402
- nextContainerName
403
- } = event;
404
- if (layoutRef.current && orderName && x && y && targetComponent && dropTargetComponentEvent && targetLayoutName === layoutName && isInnerDrop({ x, y, element: layoutRef.current })) {
405
- const {
406
- direction: dropDirection,
407
- navigationTitle: navigationTitle2,
408
- dropDocumentOutsideOption: dropDocumentOutsideOption2
409
- } = dropTargetComponentEvent;
410
- const isOrderNameNotCenter = orderName !== "center";
411
- const isOrderNameCenterAndFirstScreen = orderName === "center" && centerDropTargetComponent.length <= 1;
412
- if (isOrderNameNotCenter || isOrderNameCenterAndFirstScreen) {
413
- setIsSplit(true);
414
- if (isOrderNameNotCenter) {
415
- setDirection(dropDirection);
416
- const targetComponentsMap = handleUpdateDropTargetComponents({
417
- orderName,
418
- parentOrderName,
419
- containerName: targetContainerName,
420
- nextContainerName,
421
- dropComponent: targetComponent,
422
- parentLayoutName: "",
423
- layoutName,
424
- navigationTitle: navigationTitle2,
425
- isUsePrefix: true,
426
- afterDropTargetComponent,
427
- beforeDropTargetComponent,
428
- centerDropTargetComponent,
429
- dropDocumentOutsideOption: dropDocumentOutsideOption2
430
- });
431
- (0, import_FlexLayoutContainerStore.setSplitScreen)(layoutName, layoutName, {
432
- ...{
433
- afterDropTargetComponent,
434
- beforeDropTargetComponent,
435
- centerDropTargetComponent,
436
- direction: dropDirection
437
- },
438
- ...targetComponentsMap,
439
- ...{ direction: dropDirection }
440
- });
441
- Promise.resolve().then(
442
- () => dropEndCallback && dropEndCallback({
443
- x: event.x,
444
- y: event.y,
445
- containerName
446
- })
447
- );
448
- } else {
449
- const childScreenInfo = (0, import_FlexLayoutContainerStore.getCurrentSplitScreenComponents)(
450
- layoutName,
451
- `${layoutName}_center=${centerDropTargetComponent[0].screenKey}`
452
- ) || {
453
- afterDropTargetComponent: [],
454
- beforeDropTargetComponent: [],
455
- centerDropTargetComponent: [],
456
- direction
457
- };
458
- (0, import_FlexLayoutContainerStore.setSplitScreen)(
459
- layoutName,
460
- `${layoutName}_center=${centerDropTargetComponent[0].screenKey}`,
461
- {
462
- ...childScreenInfo,
463
- ...{
464
- centerDropTargetComponent: [
465
- centerDropTargetComponent[0],
466
- {
467
- containerName: `${targetContainerName}_${layoutName}_${orderName}`,
468
- component: targetComponent,
469
- dropDocumentOutsideOption: dropDocumentOutsideOption2,
470
- screenKey: dropTargetComponentEvent.screenKey,
471
- navigationTitle: navigationTitle2
472
- }
473
- ]
474
- }
475
- }
476
- );
477
- }
478
- }
479
- }
480
- }
481
- });
482
- return () => {
483
- subscribe.unsubscribe();
484
- };
485
- }, [
486
- direction,
487
- layoutName,
488
- isSplit,
489
- beforeDropTargetComponent,
490
- afterDropTargetComponent,
491
- centerDropTargetComponent
492
- ]);
493
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: `${import_FlexLayout.default["flex-split-screen"]}`, ref: layoutRef, children: [
494
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
495
- import_FlexLayout2.default,
496
- {
497
- direction,
498
- layoutName,
499
- "data-is_split": isSplit,
500
- panelMovementMode: "bulldozer",
501
- children: [
502
- beforeDropTargetComponent.length != 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: beforeDropTargetComponent.map(
503
- ({
504
- containerName: cName,
505
- component,
506
- navigationTitle: navigationTitle2,
507
- dropDocumentOutsideOption: dropDocumentOutsideOption2,
508
- screenKey: screenKey2
509
- }, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
510
- import_FlexLayoutContainer.default,
511
- {
512
- containerName: cName,
513
- isInitialResizable: true,
514
- isResizePanel: true,
515
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
516
- FlexLayoutSplitScreenChild,
517
- {
518
- parentDirection: direction,
519
- layoutName: `${layoutName}_before`,
520
- parentLayoutName: layoutName,
521
- containerName: cName,
522
- depth: 1,
523
- rootRef: layoutRef,
524
- screenKey: screenKey2,
525
- initialCenterComponents: [
526
- {
527
- navigationTitle: navigationTitle2,
528
- component,
529
- containerName: cName,
530
- dropDocumentOutsideOption: dropDocumentOutsideOption2,
531
- screenKey: screenKey2
532
- }
533
- ],
534
- rootName: layoutName
535
- }
536
- )
537
- },
538
- cName
539
- )
540
- ) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {}),
541
- centerDropTargetComponent.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
542
- import_FlexLayoutContainer.default,
543
- {
544
- containerName: `${centerDropTargetComponent[0].containerName}`,
545
- isInitialResizable: true,
546
- isResizePanel: isSplit,
547
- children: isSplit ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
548
- FlexLayoutSplitScreenChild,
549
- {
550
- parentDirection: direction,
551
- layoutName: `${layoutName}_center`,
552
- parentLayoutName: layoutName,
553
- containerName: `${centerDropTargetComponent[0].containerName}`,
554
- depth: 0,
555
- rootRef: layoutRef,
556
- screenKey: centerDropTargetComponent[0].screenKey,
557
- initialCenterComponents: [
558
- {
559
- navigationTitle: centerDropTargetComponent[0].navigationTitle,
560
- component: centerDropTargetComponent[0].component,
561
- containerName: centerDropTargetComponent[0].containerName,
562
- dropDocumentOutsideOption: centerDropTargetComponent[0].dropDocumentOutsideOption,
563
- screenKey: centerDropTargetComponent[0].screenKey
564
- }
565
- ],
566
- rootName: layoutName
567
- }
568
- ) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
569
- import_FlexLayoutSplitScreenScrollBox.default,
570
- {
571
- keyName: centerDropTargetComponent[0].containerName,
572
- isDefaultScrollStyle: true,
573
- children: centerDropTargetComponent[0].component
574
- }
575
- )
576
- }
577
- ),
578
- afterDropTargetComponent.length != 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: afterDropTargetComponent.map(
579
- ({
580
- containerName: cName,
581
- component,
582
- navigationTitle: navigationTitle2,
583
- dropDocumentOutsideOption: dropDocumentOutsideOption2,
584
- screenKey: screenKey2
585
- }, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
586
- import_FlexLayoutContainer.default,
587
- {
588
- containerName: cName,
589
- isInitialResizable: true,
590
- isResizePanel: afterDropTargetComponent.length - 1 !== i,
591
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
592
- FlexLayoutSplitScreenChild,
593
- {
594
- parentDirection: direction,
595
- layoutName: `${layoutName}_after`,
596
- parentLayoutName: layoutName,
597
- containerName: cName,
598
- depth: 1,
599
- rootRef: layoutRef,
600
- screenKey: screenKey2,
601
- initialCenterComponents: [
602
- {
603
- navigationTitle: navigationTitle2,
604
- component,
605
- containerName: cName,
606
- dropDocumentOutsideOption: dropDocumentOutsideOption2,
607
- screenKey: screenKey2
608
- }
609
- ],
610
- rootName: layoutName
611
- }
612
- )
613
- },
614
- cName
615
- )
616
- ) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {})
617
- ]
618
- }
619
- ),
620
- boundaryContainerSize && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
621
- "div",
622
- {
623
- className: `${import_FlexLayout.default["flex-split-screen-boundary-container"]}`,
624
- style: { ...boundaryContainerSize },
625
- children: "\u2B07\uFE0F\uB4DC\uB86D\uD558\uBA74 \uD654\uBA74\uC774 \uBD84\uD560\uB429\uB2C8\uB2E4."
626
- }
627
- )
628
- ] });
629
- }
630
- function FlexLayoutSplitScreenChild({
631
- containerName,
632
- layoutName,
633
- parentLayoutName,
634
- parentDirection,
635
- depth,
636
- //isSplit: isSplitInitial,
637
- rootRef,
638
- rootName,
639
- initialCenterComponents,
640
- screenKey
641
- }) {
642
- const {
643
- direction,
644
- isSplit,
645
- boundaryContainerSize,
646
- afterDropTargetComponent,
647
- beforeDropTargetComponent,
648
- centerDropTargetComponent,
649
- setAfterDropTargetComponent,
650
- setBeforeDropTargetComponent,
651
- setCenterDropTargetComponent,
652
- layoutRef,
653
- setIsSplit,
654
- setDirection
655
- } = (0, import_useFlexLayoutSplitScreen.useFlexLayoutSplitScreen)({
656
- isSplitInitial: false,
657
- directionInitial: "row",
658
- parentDirection,
659
- selfContainerName: containerName,
660
- parentLayoutName,
661
- layoutName
662
- });
663
- const [isEmptyContent, setIsEmptyContent] = (0, import_react.useState)(false);
664
- const [activeIndex, setActiveIndex] = (0, import_react.useState)(0);
665
- const centerDropTargetComponentRef = (0, import_react.useRef)(centerDropTargetComponent);
666
- const initialCenterRef = (0, import_react.useRef)(
667
- initialCenterComponents ?? []
668
- );
669
- const activeIndexRef = (0, import_react.useRef)(activeIndex);
670
- (0, import_react.useEffect)(() => {
671
- const storeKey = `${layoutName}=${screenKey}`;
672
- const subscribe = (0, import_FlexLayoutContainerStore.getSplitScreen)(rootName, storeKey).pipe((0, import_rxjs.take)(1)).subscribe((layoutInfo) => {
673
- if (layoutInfo) return;
674
- (0, import_FlexLayoutContainerStore.setSplitScreen)(rootName, storeKey, {
675
- afterDropTargetComponent: [],
676
- beforeDropTargetComponent: [],
677
- centerDropTargetComponent: initialCenterRef.current,
678
- direction
679
- });
680
- });
681
- return () => {
682
- (0, import_FlexLayoutContainerStore.removeSplitScreenChild)(rootName, `${layoutName}=${screenKey}`);
683
- subscribe.unsubscribe();
684
- };
685
- }, [rootName, layoutName, screenKey]);
686
- (0, import_react.useEffect)(() => {
687
- const subscribe = (0, import_FlexLayoutContainerStore.getSplitScreen)(rootName, `${layoutName}=${screenKey}`).subscribe((layoutInfo) => {
688
- if (layoutInfo) {
689
- setBeforeDropTargetComponent([
690
- ...layoutInfo.beforeDropTargetComponent
691
- ]);
692
- setAfterDropTargetComponent([
693
- ...layoutInfo.afterDropTargetComponent
694
- ]);
695
- setCenterDropTargetComponent([
696
- ...layoutInfo.centerDropTargetComponent
697
- ]);
698
- setDirection(layoutInfo.direction);
699
- if (layoutInfo.beforeDropTargetComponent.length !== 0 || layoutInfo.afterDropTargetComponent.length !== 0) {
700
- setIsSplit(true);
701
- } else if (layoutInfo.beforeDropTargetComponent.length === 0 && layoutInfo.centerDropTargetComponent.length === 0 && layoutInfo.afterDropTargetComponent.length === 0) {
702
- import_useDrag.dropMovementEventSubject.next({
703
- state: "remove",
704
- targetContainerName: containerName,
705
- targetParentLayoutName: "",
706
- targetLayoutName: parentLayoutName
707
- });
708
- setIsEmptyContent(true);
709
- }
710
- }
711
- });
712
- return () => {
713
- subscribe.unsubscribe();
714
- (0, import_FlexLayoutContainerStore.removeRootSplitScreen)(layoutName);
715
- };
716
- }, [rootName, layoutName]);
717
- (0, import_react.useEffect)(() => {
718
- const subscribe = import_useDrag.dropMovementEventSubject.pipe(
719
- (0, import_rxjs.distinctUntilChanged)((prev, curr) => {
720
- const filterChildren = (obj) => {
721
- const {
722
- children,
723
- component,
724
- targetComponent,
725
- x,
726
- y,
727
- ...rest
728
- } = obj || {};
729
- return rest;
730
- };
731
- return (0, import_fast_deep_equal.default)(filterChildren(prev), filterChildren(curr));
732
- })
733
- ).subscribe((event) => {
734
- if (event.state === "remove") {
735
- if (event.targetParentLayoutName === layoutName || event.targetParentLayoutName === "" && event.targetLayoutName === layoutName) {
736
- requestAnimationFrame(() => {
737
- let removeCallback = (removeOrderName) => {
738
- if (event.nextContainerName && event.dropTargetComponentEvent && event.targetComponent) {
739
- const targetComponentsMap = handleUpdateDropTargetComponents({
740
- orderName: removeOrderName,
741
- containerName: event.nextContainerName,
742
- parentLayoutName,
743
- layoutName,
744
- dropComponent: event.targetComponent,
745
- navigationTitle: event.dropTargetComponentEvent.navigationTitle,
746
- isUsePrefix: true,
747
- afterDropTargetComponent,
748
- beforeDropTargetComponent,
749
- centerDropTargetComponent,
750
- dropDocumentOutsideOption: event.dropTargetComponentEvent?.dropDocumentOutsideOption,
751
- screenKey: event.dropTargetComponentEvent.screenKey
752
- });
753
- (0, import_FlexLayoutContainerStore.setSplitScreen)(
754
- rootName,
755
- `${layoutName}=${screenKey}`,
756
- {
757
- ...(0, import_FlexLayoutContainerStore.getCurrentSplitScreenComponents)(
758
- rootName,
759
- `${layoutName}=${screenKey}`
760
- ) || {
761
- afterDropTargetComponent,
762
- beforeDropTargetComponent,
763
- centerDropTargetComponent,
764
- direction
765
- },
766
- ...targetComponentsMap
767
- }
768
- );
769
- Promise.resolve().then(
770
- () => event.dropEndCallback && event.dropEndCallback({
771
- x: event.x,
772
- y: event.y,
773
- containerName
774
- })
775
- );
776
- }
777
- };
778
- const currentComponents = (0, import_FlexLayoutContainerStore.getCurrentSplitScreenComponents)(
779
- rootName,
780
- `${layoutName}=${screenKey}`
781
- );
782
- const afterList = handleRemove(
783
- currentComponents?.afterDropTargetComponent || afterDropTargetComponent,
784
- event.targetContainerName,
785
- () => removeCallback("after")
786
- );
787
- const beforList = handleRemove(
788
- currentComponents?.beforeDropTargetComponent || beforeDropTargetComponent,
789
- event.targetContainerName,
790
- () => removeCallback("before")
791
- );
792
- const centerList = handleRemove(
793
- currentComponents?.centerDropTargetComponent || centerDropTargetComponent,
794
- event.targetContainerName,
795
- () => removeCallback("center")
796
- );
797
- (0, import_FlexLayoutContainerStore.setSplitScreen)(
798
- rootName,
799
- `${layoutName}=${screenKey}`,
800
- {
801
- afterDropTargetComponent: afterList,
802
- beforeDropTargetComponent: beforList,
803
- centerDropTargetComponent: centerList,
804
- direction
805
- }
806
- );
807
- });
808
- }
809
- } else if (event.state === "append") {
810
- const {
811
- x,
812
- y,
813
- dropEndCallback,
814
- dropTargetComponentEvent,
815
- orderName,
816
- targetLayoutName,
817
- targetParentLayoutName,
818
- targetContainerName,
819
- targetComponent,
820
- nextContainerName,
821
- parentOrderName
822
- } = event;
823
- if (layoutRef.current && orderName && x && y && dropTargetComponentEvent && isInnerDrop({ x, y, element: layoutRef.current })) {
824
- const {
825
- direction: dropDirection,
826
- navigationTitle,
827
- dropDocumentOutsideOption,
828
- screenKey: containerScreenKey
829
- } = dropTargetComponentEvent;
830
- if (
831
- //orderName !== 'center' &&
832
- targetLayoutName === layoutName && targetComponent
833
- ) {
834
- if (dropDirection === parentDirection && orderName !== "center") {
835
- import_useDrag.dropMovementEventSubject.next({
836
- state: "append",
837
- targetContainerName,
838
- targetParentLayoutName: "",
839
- targetLayoutName: parentLayoutName,
840
- targetComponent,
841
- nextContainerName: containerName,
842
- parentOrderName: getSelfOrderName(layoutName) || orderName,
843
- orderName,
844
- x,
845
- y,
846
- dropEndCallback,
847
- dropTargetComponentEvent: {
848
- navigationTitle,
849
- dropDocumentOutsideOption,
850
- direction: parentDirection,
851
- screenKey
852
- }
853
- });
854
- } else {
855
- if (orderName !== "center") {
856
- setDirection(dropDirection);
857
- setIsSplit(true);
858
- }
859
- const targetComponentsMap = handleUpdateDropTargetComponents({
860
- orderName,
861
- parentOrderName,
862
- containerName: targetContainerName,
863
- nextContainerName,
864
- parentLayoutName,
865
- layoutName,
866
- dropComponent: targetComponent,
867
- navigationTitle,
868
- isUsePrefix: orderName !== "center",
869
- afterDropTargetComponent,
870
- beforeDropTargetComponent,
871
- centerDropTargetComponent,
872
- dropDocumentOutsideOption
873
- });
874
- (0, import_FlexLayoutContainerStore.setSplitScreen)(
875
- rootName,
876
- `${layoutName}=${screenKey}`,
877
- {
878
- ...(0, import_FlexLayoutContainerStore.getCurrentSplitScreenComponents)(
879
- rootName,
880
- `${layoutName}=${screenKey}`
881
- ) || {
882
- afterDropTargetComponent,
883
- beforeDropTargetComponent,
884
- centerDropTargetComponent,
885
- direction
886
- },
887
- ...targetComponentsMap,
888
- ...{ direction: dropDirection }
889
- }
890
- );
891
- Promise.resolve().then(
892
- () => event.dropEndCallback && event.dropEndCallback({
893
- x: event.x,
894
- y: event.y,
895
- containerName
896
- })
897
- );
898
- }
899
- }
900
- }
901
- }
902
- });
903
- return () => {
904
- subscribe.unsubscribe();
905
- };
906
- }, [
907
- direction,
908
- parentDirection,
909
- parentLayoutName,
910
- layoutName,
911
- beforeDropTargetComponent,
912
- afterDropTargetComponent,
913
- centerDropTargetComponent
914
- ]);
915
- (0, import_react.useEffect)(() => {
916
- centerDropTargetComponentRef.current = centerDropTargetComponent;
917
- }, [centerDropTargetComponent]);
918
- (0, import_react.useEffect)(() => {
919
- activeIndexRef.current = activeIndex;
920
- }, [activeIndex]);
921
- const [isOnlyOneScreen, setIsOnlyOneScreen] = (0, import_react.useState)(false);
922
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: !isEmptyContent && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
923
- "div",
924
- {
925
- className: `${import_FlexLayout.default["flex-split-screen"]}`,
926
- ref: layoutRef,
927
- children: [
928
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
929
- import_FlexLayout2.default,
930
- {
931
- direction,
932
- layoutName: `${layoutName}`,
933
- panelMovementMode: "bulldozer",
934
- children: [
935
- beforeDropTargetComponent.length != 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: beforeDropTargetComponent.map(
936
- ({
937
- containerName: cName,
938
- component,
939
- navigationTitle,
940
- dropDocumentOutsideOption,
941
- screenKey: screenKey2
942
- }, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
943
- import_FlexLayoutContainer.default,
944
- {
945
- containerName: cName,
946
- isInitialResizable: true,
947
- isResizePanel: true,
948
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
949
- FlexLayoutSplitScreenChild,
950
- {
951
- parentDirection: direction,
952
- layoutName: `${layoutName}_before-${depth}`,
953
- parentLayoutName: layoutName,
954
- containerName: cName,
955
- depth: depth + 1,
956
- rootRef,
957
- screenKey: screenKey2,
958
- initialCenterComponents: [
959
- {
960
- navigationTitle,
961
- component,
962
- containerName: cName,
963
- dropDocumentOutsideOption,
964
- screenKey: screenKey2
965
- }
966
- ],
967
- rootName
968
- }
969
- )
970
- },
971
- cName
972
- )
973
- ) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {}),
974
- centerDropTargetComponent.length != 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
975
- import_FlexLayoutContainer.default,
976
- {
977
- containerName: `${(centerDropTargetComponent[activeIndex] || centerDropTargetComponent[0]).containerName}`,
978
- isInitialResizable: true,
979
- isResizePanel: isSplit,
980
- children: isSplit ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { "data-key": screenKey, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
981
- FlexLayoutSplitScreenChild,
982
- {
983
- parentDirection: direction,
984
- layoutName: `${layoutName}_center-${depth}`,
985
- parentLayoutName: layoutName,
986
- containerName: `${(centerDropTargetComponent[activeIndex] || centerDropTargetComponent[0]).containerName}`,
987
- depth: depth + 1,
988
- rootRef,
989
- initialCenterComponents: centerDropTargetComponent.map(
990
- ({
991
- navigationTitle,
992
- component,
993
- containerName: cName,
994
- dropDocumentOutsideOption,
995
- screenKey: centerScreenKey
996
- }) => ({
997
- navigationTitle,
998
- component,
999
- containerName: cName,
1000
- dropDocumentOutsideOption,
1001
- screenKey: centerScreenKey
1002
- })
1003
- ),
1004
- screenKey,
1005
- rootName
1006
- }
1007
- ) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
1008
- import_FlexLayoutSplitScreenScrollBox.default,
1009
- {
1010
- keyName: (centerDropTargetComponent[activeIndex] || centerDropTargetComponent[0]).containerName,
1011
- isDefaultScrollStyle: true,
1012
- children: [
1013
- !isOnlyOneScreen && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
1014
- "div",
1015
- {
1016
- className: `${import_FlexLayout.default["flex-split-screen-drag-box-title-wrapper-sticky"]}`,
1017
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
1018
- "div",
1019
- {
1020
- "data-is_split": isSplit,
1021
- "data-layout_name": layoutName,
1022
- "data-parent_layout_name": parentLayoutName,
1023
- "data-container_name": `${(centerDropTargetComponent[activeIndex] || centerDropTargetComponent[0]).containerName}`,
1024
- className: `${import_FlexLayout.default["flex-split-screen-drag-box-title-wrapper"]}`,
1025
- children: [
1026
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
1027
- import_FlexLayoutSplitScreenDragBoxContainer.default,
1028
- {
1029
- "data-layout_name": layoutName,
1030
- layoutName,
1031
- children: centerDropTargetComponent.map(
1032
- (item, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
1033
- import_FlexLayoutSplitScreenDragBoxItem.default,
1034
- {
1035
- onClose: (ev) => {
1036
- if (activeIndexRef.current === index && centerDropTargetComponent.length === 1) {
1037
- import_useDrag.dropMovementEventSubject.next(
1038
- {
1039
- state: "remove",
1040
- targetContainerName: containerName,
1041
- targetParentLayoutName: parentLayoutName,
1042
- targetLayoutName: layoutName
1043
- }
1044
- );
1045
- } else {
1046
- if (centerDropTargetComponent.length === activeIndexRef.current + 1) {
1047
- setActiveIndex(
1048
- activeIndexRef.current - 1
1049
- );
1050
- }
1051
- setCenterDropTargetComponent(
1052
- (prev) => {
1053
- const next = handleRemove(
1054
- prev,
1055
- item.containerName,
1056
- () => {
1057
- }
1058
- );
1059
- const key = `${layoutName}=${screenKey}`;
1060
- const current = (0, import_FlexLayoutContainerStore.getCurrentSplitScreenComponents)(
1061
- rootName,
1062
- key
1063
- ) || {
1064
- afterDropTargetComponent,
1065
- beforeDropTargetComponent,
1066
- centerDropTargetComponent: prev,
1067
- direction
1068
- };
1069
- (0, import_FlexLayoutContainerStore.setSplitScreen)(
1070
- rootName,
1071
- key,
1072
- {
1073
- ...current,
1074
- centerDropTargetComponent: next
1075
- }
1076
- );
1077
- return next;
1078
- }
1079
- );
1080
- }
1081
- },
1082
- isActive: activeIndex === index,
1083
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
1084
- import_FlexLayoutSplitScreenDragBox.default,
1085
- {
1086
- screenKey: item.screenKey,
1087
- onClick: () => {
1088
- setActiveIndex(
1089
- index
1090
- );
1091
- },
1092
- containerName: item.containerName,
1093
- dropDocumentOutsideOption: item.dropDocumentOutsideOption,
1094
- targetComponent: item.component,
1095
- navigationTitle: item.navigationTitle,
1096
- "data-container-name": item.containerName,
1097
- "data-layout-name": layoutName,
1098
- "data-parent-layout-name": parentLayoutName,
1099
- dropEndCallback: ({
1100
- x,
1101
- y,
1102
- containerName: appendContainerName
1103
- }) => {
1104
- if (!rootRef.current || !layoutRef.current)
1105
- return;
1106
- const isRootOver = isOverDrop(
1107
- {
1108
- x,
1109
- y,
1110
- element: rootRef.current
1111
- }
1112
- );
1113
- const isLayoutInner = isInnerDrop(
1114
- {
1115
- x,
1116
- y,
1117
- element: layoutRef.current
1118
- }
1119
- );
1120
- if (!isRootOver && !isLayoutInner || !isRootOver && isLayoutInner && centerDropTargetComponentRef.current.length > 1) {
1121
- const option = {};
1122
- if (centerDropTargetComponentRef.current.length > 1) {
1123
- const {
1124
- adjacentItem,
1125
- adjacentIndex
1126
- } = getAdjacentItem(
1127
- centerDropTargetComponentRef.current,
1128
- activeIndexRef.current
1129
- );
1130
- if (adjacentItem && activeIndexRef.current === index) {
1131
- Object.assign(
1132
- option,
1133
- {
1134
- x,
1135
- y,
1136
- targetComponent: adjacentItem.component,
1137
- nextContainerName: adjacentItem.containerName,
1138
- orderName: "center",
1139
- dropTargetComponentEvent: {
1140
- navigationTitle: adjacentItem.navigationTitle,
1141
- dropDocumentOutsideOption: adjacentItem.dropDocumentOutsideOption,
1142
- direction,
1143
- screenKey
1144
- }
1145
- }
1146
- );
1147
- }
1148
- }
1149
- if (index === 0) {
1150
- import_useDrag.dropMovementEventSubject.next(
1151
- {
1152
- state: "remove",
1153
- targetContainerName: item.containerName,
1154
- targetParentLayoutName: parentLayoutName,
1155
- targetLayoutName: layoutName,
1156
- ...option
1157
- }
1158
- );
1159
- } else {
1160
- import_useDrag.dropMovementEventSubject.next(
1161
- {
1162
- state: "remove",
1163
- targetContainerName: item.containerName,
1164
- targetParentLayoutName: "",
1165
- targetLayoutName: layoutName,
1166
- ...option
1167
- }
1168
- );
1169
- }
1170
- }
1171
- },
1172
- children: item.navigationTitle
1173
- }
1174
- )
1175
- },
1176
- item.navigationTitle + layoutName + item.containerName
1177
- )
1178
- )
1179
- },
1180
- layoutName
1181
- ),
1182
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_FlexLayoutSplitScreenDragBoxTitleMore.default, {})
1183
- ]
1184
- }
1185
- )
1186
- }
1187
- ),
1188
- (() => {
1189
- const target = centerDropTargetComponent[activeIndex] || centerDropTargetComponent[0];
1190
- return target.component;
1191
- })()
1192
- ]
1193
- }
1194
- )
1195
- },
1196
- (centerDropTargetComponent[activeIndex] || centerDropTargetComponent[0]).containerName
1197
- ) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {}),
1198
- afterDropTargetComponent.length != 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: afterDropTargetComponent.map(
1199
- ({
1200
- containerName: cName,
1201
- component,
1202
- navigationTitle,
1203
- dropDocumentOutsideOption,
1204
- screenKey: screenKey2
1205
- }, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
1206
- import_FlexLayoutContainer.default,
1207
- {
1208
- containerName: cName,
1209
- isInitialResizable: true,
1210
- isResizePanel: i !== afterDropTargetComponent.length - 1,
1211
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
1212
- FlexLayoutSplitScreenChild,
1213
- {
1214
- parentDirection: direction,
1215
- layoutName: `${layoutName}_after-${depth}`,
1216
- parentLayoutName: layoutName,
1217
- containerName: cName,
1218
- depth: depth + 1,
1219
- rootRef,
1220
- screenKey: screenKey2,
1221
- initialCenterComponents: [
1222
- {
1223
- navigationTitle,
1224
- component,
1225
- containerName: cName,
1226
- dropDocumentOutsideOption,
1227
- screenKey: screenKey2
1228
- }
1229
- ],
1230
- rootName
1231
- }
1232
- )
1233
- },
1234
- cName
1235
- )
1236
- ) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {})
1237
- ]
1238
- }
1239
- ),
1240
- boundaryContainerSize && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
1241
- "div",
1242
- {
1243
- className: `${import_FlexLayout.default["flex-split-screen-boundary-container"]}`,
1244
- style: { ...boundaryContainerSize },
1245
- children: "\u2B07\uFE0F\uB4DC\uB86D\uD558\uBA74 \uD654\uBA74\uC774 \uBD84\uD560\uB429\uB2C8\uB2E4."
1246
- }
1247
- )
1248
- ]
1249
- }
1250
- ) });
1251
- }
1252
- //# sourceMappingURL=FlexLayoutSplitScreen.cjs.map
1
+ "use strict";"use client";var ue=Object.create;var J=Object.defineProperty;var De=Object.getOwnPropertyDescriptor;var be=Object.getOwnPropertyNames;var Te=Object.getPrototypeOf,Se=Object.prototype.hasOwnProperty;var xe=(n,e)=>{for(var t in e)J(n,t,{get:e[t],enumerable:!0})},pe=(n,e,t,T)=>{if(e&&typeof e=="object"||typeof e=="function")for(let u of be(e))!Se.call(n,u)&&u!==t&&J(n,u,{get:()=>e[u],enumerable:!(T=De(e,u))||T.enumerable});return n};var j=(n,e,t)=>(t=n!=null?ue(Te(n)):{},pe(e||!n||!n.__esModule?J(t,"default",{value:n,enumerable:!0}):t,n)),Le=n=>pe(J({},"__esModule",{value:!0}),n);var ye={};xe(ye,{default:()=>ge});module.exports=Le(ye);var i=require("react/jsx-runtime"),O=require("react"),w=require("../hooks/useDrag"),te=require("../hooks/useFlexLayoutSplitScreen"),l=require("../store/FlexLayoutContainerStore"),U=j(require("../styles/FlexLayout.module.css"),1),ne=j(require("./FlexLayout"),1),K=j(require("./FlexLayoutContainer"),1),se=j(require("./FlexLayoutSplitScreenDragBox"),1),re=j(require("fast-deep-equal"),1),Y=require("rxjs"),ce=j(require("./FlexLayoutSplitScreenDragBoxContainer"),1),le=j(require("./FlexLayoutSplitScreenDragBoxItem"),1),me=j(require("./FlexLayoutSplitScreenDragBoxTitleMore"),1),oe=j(require("./FlexLayoutSplitScreenScrollBox"),1);function he({x:n,y:e,element:t}){const{x:T,y:u,right:v,bottom:s}=t.getBoundingClientRect();return n<T||n>v||e<u||e>s}function ee({x:n,y:e,element:t}){const{x:T,y:u,right:v,bottom:s}=t.getBoundingClientRect();return n>=T&&n<=v&&e>=u&&e<=s}const Q=({orderName:n,parentOrderName:e,containerName:t,parentLayoutName:T,layoutName:u,dropComponent:v,navigationTitle:s,nextContainerName:k,isUsePrefix:S=!0,beforeDropTargetComponent:D,afterDropTargetComponent:R,centerDropTargetComponent:g,dropDocumentOutsideOption:N,screenKey:E=Array.from(window.crypto.getRandomValues(new Uint32Array(16)),p=>p.toString(32).padStart(2,"0")).join("")})=>{const p=e||n;let F,C,z;p===n||p==="center"?F=n==="before"?{beforeDropTargetComponent:D}:n==="after"?{afterDropTargetComponent:R}:{centerDropTargetComponent:g.filter(a=>!a.containerName.split("_").at(0).startsWith(t.split("_").at(0)))}:F=p==="before"?{beforeDropTargetComponent:D}:{afterDropTargetComponent:R};const b=Object.entries(F)[0];z=b[0],C=b[1];const o={containerName:`${t+"_"+u}${S?"_"+n+"-"+C.length:""}`,component:(0,O.cloneElement)(v,{key:E,screenKey:E}),navigationTitle:s,dropDocumentOutsideOption:N,screenKey:E||Array.from(window.crypto.getRandomValues(new Uint32Array(16)),a=>a.toString(32).padStart(2,"0")).join("")};let m;if(k){const a=C.findIndex(P=>P.containerName===k);a!==-1?p===n?n==="before"?m=[...C.slice(0,a),o,...C.slice(a)]:m=[...C.slice(0,a+1),o,...C.slice(a+1)]:p==="after"&&n==="before"?m=[...C.slice(0,a),o,...C.slice(a)]:p==="before"&&n==="after"?m=[...C.slice(0,a+1),o,...C.slice(a+1)]:n==="before"?m=[...C.slice(0,a),o,...C.slice(a)]:m=[...C.slice(0,a+1),o,...C.slice(a+1)]:p==="center"&&n==="after"?m=[o,...C]:p==="center"&&n==="before"?m=[...C,o]:m=n==="before"?[o,...C]:[...C,o]}else m=n==="before"?[o,...C]:[...C,o];const h=new Set,$=m.filter(a=>h.has(a.containerName)?!1:(h.add(a.containerName),!0));return w.dropMovementEventSubject.next({state:"append",targetParentLayoutName:T,targetLayoutName:u,targetContainerName:t,orderName:n}),{[z]:$}},I=(n,e,t)=>{const T=n.filter(u=>u.containerName!==e);return T.length!=n.length&&t(n.length-T.length),T};function Oe(n,e){return e+1<n.length?{adjacentItem:n[e+1],adjacentIndex:e+1}:e-1>=0?{adjacentItem:n[e-1],adjacentIndex:e-1}:{adjacentItem:null,adjacentIndex:e}}const $e=n=>{const e=n.split("_").at(-1)?.split("-").at(0)?.split("=").at(0);if(["before","center","after"].some(t=>t===e))return e};function ge({children:n,containerName:e,layoutName:t,navigationTitle:T,dropDocumentOutsideOption:u,screenKey:v}){const{direction:s,isSplit:k,boundaryContainerSize:S,afterDropTargetComponent:D,beforeDropTargetComponent:R,centerDropTargetComponent:g,setAfterDropTargetComponent:N,setBeforeDropTargetComponent:E,setCenterDropTargetComponent:p,layoutRef:F,setIsSplit:C,setDirection:z}=(0,te.useFlexLayoutSplitScreen)({isSplitInitial:!1,directionInitial:"row",selfContainerName:e,parentLayoutName:"",layoutName:t});return(0,O.useEffect)(()=>{(0,l.resetRootSplitScreen)(t);const b=(0,l.getSplitScreen)(t,t).subscribe(o=>{o?(E([...o.beforeDropTargetComponent]),N([...o.afterDropTargetComponent]),p([...o.centerDropTargetComponent]),z(o.direction),(o.beforeDropTargetComponent.length!==0||o.afterDropTargetComponent.length!==0)&&C(!0)):(0,l.setSplitScreen)(t,t,{afterDropTargetComponent:[],beforeDropTargetComponent:[],centerDropTargetComponent:[{containerName:e,component:n,navigationTitle:T,dropDocumentOutsideOption:u,screenKey:v||Array.from(window.crypto.getRandomValues(new Uint32Array(16)),m=>m.toString(32).padStart(2,"0")).join("")}],direction:s})});return()=>{b.unsubscribe(),(0,l.removeRootSplitScreen)(t)}},[t,v,T,n,s]),(0,O.useEffect)(()=>{const b=w.dropMovementEventSubject.pipe((0,Y.distinctUntilChanged)((o,m)=>{const h=$=>{const{children:a,component:P,targetComponent:_,x:q,y:M,...H}=$||{};return H};return(0,re.default)(h(o),h(m))})).subscribe(o=>{if(o.state==="remove")(o.targetParentLayoutName===t||o.targetParentLayoutName===""&&o.targetLayoutName===t)&&requestAnimationFrame(()=>{let m=_=>{if(o.nextContainerName&&o.dropTargetComponentEvent&&o.targetComponent){const q=Q({orderName:_,containerName:o.nextContainerName,parentLayoutName:"",layoutName:t,dropComponent:o.targetComponent,navigationTitle:o.dropTargetComponentEvent.navigationTitle,isUsePrefix:!0,afterDropTargetComponent:D,beforeDropTargetComponent:R,centerDropTargetComponent:g,dropDocumentOutsideOption:u,screenKey:o.dropTargetComponentEvent.screenKey});(0,l.setSplitScreen)(t,t,{...(0,l.getCurrentSplitScreenComponents)(t,t)||{afterDropTargetComponent:D,beforeDropTargetComponent:R,centerDropTargetComponent:g,direction:s},...q}),Promise.resolve().then(()=>o.dropEndCallback&&o.dropEndCallback({x:o.x,y:o.y,containerName:e}))}};const h=(0,l.getCurrentSplitScreenComponents)(t,t),$=I(h?.afterDropTargetComponent||D,o.targetContainerName,()=>m("after")),a=I(h?.beforeDropTargetComponent||R,o.targetContainerName,()=>m("before")),P=I(h?.centerDropTargetComponent||g,o.targetContainerName,()=>m("center"));(0,l.setSplitScreen)(t,t,{afterDropTargetComponent:$,beforeDropTargetComponent:a,centerDropTargetComponent:P,direction:s})});else if(o.state==="append"){const{x:m,y:h,dropEndCallback:$,dropTargetComponentEvent:a,orderName:P,parentOrderName:_,targetLayoutName:q,targetParentLayoutName:M,targetContainerName:H,targetComponent:W,nextContainerName:c}=o;if(F.current&&P&&m&&h&&W&&a&&q===t&&ee({x:m,y:h,element:F.current})){const{direction:r,navigationTitle:f,dropDocumentOutsideOption:d}=a,x=P!=="center",y=P==="center"&&g.length<=1;if(x||y)if(C(!0),x){z(r);const L=Q({orderName:P,parentOrderName:_,containerName:H,nextContainerName:c,dropComponent:W,parentLayoutName:"",layoutName:t,navigationTitle:f,isUsePrefix:!0,afterDropTargetComponent:D,beforeDropTargetComponent:R,centerDropTargetComponent:g,dropDocumentOutsideOption:d});(0,l.setSplitScreen)(t,t,{afterDropTargetComponent:D,beforeDropTargetComponent:R,centerDropTargetComponent:g,direction:r,...L,direction:r}),Promise.resolve().then(()=>$&&$({x:o.x,y:o.y,containerName:e}))}else{const L=(0,l.getCurrentSplitScreenComponents)(t,`${t}_center=${g[0].screenKey}`)||{afterDropTargetComponent:[],beforeDropTargetComponent:[],centerDropTargetComponent:[],direction:s};(0,l.setSplitScreen)(t,`${t}_center=${g[0].screenKey}`,{...L,centerDropTargetComponent:[g[0],{containerName:`${H}_${t}_${P}`,component:W,dropDocumentOutsideOption:d,screenKey:a.screenKey,navigationTitle:f}]})}}}});return()=>{b.unsubscribe()}},[s,t,k,R,D,g]),(0,i.jsxs)("div",{className:`${U.default["flex-split-screen"]}`,ref:F,children:[(0,i.jsxs)(ne.default,{direction:s,layoutName:t,"data-is_split":k,panelMovementMode:"bulldozer",children:[R.length!=0?(0,i.jsx)(i.Fragment,{children:R.map(({containerName:b,component:o,navigationTitle:m,dropDocumentOutsideOption:h,screenKey:$},a)=>(0,i.jsx)(K.default,{containerName:b,isInitialResizable:!0,isResizePanel:!0,children:(0,i.jsx)(V,{parentDirection:s,layoutName:`${t}_before`,parentLayoutName:t,containerName:b,depth:1,rootRef:F,screenKey:$,initialCenterComponents:[{navigationTitle:m,component:o,containerName:b,dropDocumentOutsideOption:h,screenKey:$}],rootName:t})},b))}):(0,i.jsx)("div",{}),g.length===0?(0,i.jsx)("div",{}):(0,i.jsx)(K.default,{containerName:`${g[0].containerName}`,isInitialResizable:!0,isResizePanel:k,children:k?(0,i.jsx)(V,{parentDirection:s,layoutName:`${t}_center`,parentLayoutName:t,containerName:`${g[0].containerName}`,depth:0,rootRef:F,screenKey:g[0].screenKey,initialCenterComponents:[{navigationTitle:g[0].navigationTitle,component:g[0].component,containerName:g[0].containerName,dropDocumentOutsideOption:g[0].dropDocumentOutsideOption,screenKey:g[0].screenKey}],rootName:t}):(0,i.jsx)(oe.default,{keyName:g[0].containerName,isDefaultScrollStyle:!0,children:g[0].component})}),D.length!=0?(0,i.jsx)(i.Fragment,{children:D.map(({containerName:b,component:o,navigationTitle:m,dropDocumentOutsideOption:h,screenKey:$},a)=>(0,i.jsx)(K.default,{containerName:b,isInitialResizable:!0,isResizePanel:D.length-1!==a,children:(0,i.jsx)(V,{parentDirection:s,layoutName:`${t}_after`,parentLayoutName:t,containerName:b,depth:1,rootRef:F,screenKey:$,initialCenterComponents:[{navigationTitle:m,component:o,containerName:b,dropDocumentOutsideOption:h,screenKey:$}],rootName:t})},b))}):(0,i.jsx)("div",{})]}),S&&(0,i.jsx)("div",{className:`${U.default["flex-split-screen-boundary-container"]}`,style:{...S},children:"\u2B07\uFE0F\uB4DC\uB86D\uD558\uBA74 \uD654\uBA74\uC774 \uBD84\uD560\uB429\uB2C8\uB2E4."})]})}function V({containerName:n,layoutName:e,parentLayoutName:t,parentDirection:T,depth:u,rootRef:v,rootName:s,initialCenterComponents:k,screenKey:S}){const{direction:D,isSplit:R,boundaryContainerSize:g,afterDropTargetComponent:N,beforeDropTargetComponent:E,centerDropTargetComponent:p,setAfterDropTargetComponent:F,setBeforeDropTargetComponent:C,setCenterDropTargetComponent:z,layoutRef:b,setIsSplit:o,setDirection:m}=(0,te.useFlexLayoutSplitScreen)({isSplitInitial:!1,directionInitial:"row",parentDirection:T,selfContainerName:n,parentLayoutName:t,layoutName:e}),[h,$]=(0,O.useState)(!1),[a,P]=(0,O.useState)(0),_=(0,O.useRef)(p),q=(0,O.useRef)(k??[]),M=(0,O.useRef)(a);(0,O.useEffect)(()=>{const c=`${e}=${S}`,r=(0,l.getSplitScreen)(s,c).pipe((0,Y.take)(1)).subscribe(f=>{f||(0,l.setSplitScreen)(s,c,{afterDropTargetComponent:[],beforeDropTargetComponent:[],centerDropTargetComponent:q.current,direction:D})});return()=>{(0,l.removeSplitScreenChild)(s,`${e}=${S}`),r.unsubscribe()}},[s,e,S]),(0,O.useEffect)(()=>{const c=(0,l.getSplitScreen)(s,`${e}=${S}`).subscribe(r=>{r&&(C([...r.beforeDropTargetComponent]),F([...r.afterDropTargetComponent]),z([...r.centerDropTargetComponent]),m(r.direction),r.beforeDropTargetComponent.length!==0||r.afterDropTargetComponent.length!==0?o(!0):r.beforeDropTargetComponent.length===0&&r.centerDropTargetComponent.length===0&&r.afterDropTargetComponent.length===0&&(w.dropMovementEventSubject.next({state:"remove",targetContainerName:n,targetParentLayoutName:"",targetLayoutName:t}),$(!0)))});return()=>{c.unsubscribe(),(0,l.removeRootSplitScreen)(e)}},[s,e]),(0,O.useEffect)(()=>{const c=w.dropMovementEventSubject.pipe((0,Y.distinctUntilChanged)((r,f)=>{const d=x=>{const{children:y,component:L,targetComponent:A,x:B,y:G,...X}=x||{};return X};return(0,re.default)(d(r),d(f))})).subscribe(r=>{if(r.state==="remove")(r.targetParentLayoutName===e||r.targetParentLayoutName===""&&r.targetLayoutName===e)&&requestAnimationFrame(()=>{let f=A=>{if(r.nextContainerName&&r.dropTargetComponentEvent&&r.targetComponent){const B=Q({orderName:A,containerName:r.nextContainerName,parentLayoutName:t,layoutName:e,dropComponent:r.targetComponent,navigationTitle:r.dropTargetComponentEvent.navigationTitle,isUsePrefix:!0,afterDropTargetComponent:N,beforeDropTargetComponent:E,centerDropTargetComponent:p,dropDocumentOutsideOption:r.dropTargetComponentEvent?.dropDocumentOutsideOption,screenKey:r.dropTargetComponentEvent.screenKey});(0,l.setSplitScreen)(s,`${e}=${S}`,{...(0,l.getCurrentSplitScreenComponents)(s,`${e}=${S}`)||{afterDropTargetComponent:N,beforeDropTargetComponent:E,centerDropTargetComponent:p,direction:D},...B}),Promise.resolve().then(()=>r.dropEndCallback&&r.dropEndCallback({x:r.x,y:r.y,containerName:n}))}};const d=(0,l.getCurrentSplitScreenComponents)(s,`${e}=${S}`),x=I(d?.afterDropTargetComponent||N,r.targetContainerName,()=>f("after")),y=I(d?.beforeDropTargetComponent||E,r.targetContainerName,()=>f("before")),L=I(d?.centerDropTargetComponent||p,r.targetContainerName,()=>f("center"));(0,l.setSplitScreen)(s,`${e}=${S}`,{afterDropTargetComponent:x,beforeDropTargetComponent:y,centerDropTargetComponent:L,direction:D})});else if(r.state==="append"){const{x:f,y:d,dropEndCallback:x,dropTargetComponentEvent:y,orderName:L,targetLayoutName:A,targetParentLayoutName:B,targetContainerName:G,targetComponent:X,nextContainerName:Ce,parentOrderName:de}=r;if(b.current&&L&&f&&d&&y&&ee({x:f,y:d,element:b.current})){const{direction:Z,navigationTitle:ie,dropDocumentOutsideOption:ae,screenKey:ve}=y;if(A===e&&X)if(Z===T&&L!=="center")w.dropMovementEventSubject.next({state:"append",targetContainerName:G,targetParentLayoutName:"",targetLayoutName:t,targetComponent:X,nextContainerName:n,parentOrderName:$e(e)||L,orderName:L,x:f,y:d,dropEndCallback:x,dropTargetComponentEvent:{navigationTitle:ie,dropDocumentOutsideOption:ae,direction:T,screenKey:S}});else{L!=="center"&&(m(Z),o(!0));const fe=Q({orderName:L,parentOrderName:de,containerName:G,nextContainerName:Ce,parentLayoutName:t,layoutName:e,dropComponent:X,navigationTitle:ie,isUsePrefix:L!=="center",afterDropTargetComponent:N,beforeDropTargetComponent:E,centerDropTargetComponent:p,dropDocumentOutsideOption:ae});(0,l.setSplitScreen)(s,`${e}=${S}`,{...(0,l.getCurrentSplitScreenComponents)(s,`${e}=${S}`)||{afterDropTargetComponent:N,beforeDropTargetComponent:E,centerDropTargetComponent:p,direction:D},...fe,direction:Z}),Promise.resolve().then(()=>r.dropEndCallback&&r.dropEndCallback({x:r.x,y:r.y,containerName:n}))}}}});return()=>{c.unsubscribe()}},[D,T,t,e,E,N,p]),(0,O.useEffect)(()=>{_.current=p},[p]),(0,O.useEffect)(()=>{M.current=a},[a]);const[H,W]=(0,O.useState)(!1);return(0,i.jsx)(i.Fragment,{children:!h&&(0,i.jsxs)("div",{className:`${U.default["flex-split-screen"]}`,ref:b,children:[(0,i.jsxs)(ne.default,{direction:D,layoutName:`${e}`,panelMovementMode:"bulldozer",children:[E.length!=0?(0,i.jsx)(i.Fragment,{children:E.map(({containerName:c,component:r,navigationTitle:f,dropDocumentOutsideOption:d,screenKey:x},y)=>(0,i.jsx)(K.default,{containerName:c,isInitialResizable:!0,isResizePanel:!0,children:(0,i.jsx)(V,{parentDirection:D,layoutName:`${e}_before-${u}`,parentLayoutName:e,containerName:c,depth:u+1,rootRef:v,screenKey:x,initialCenterComponents:[{navigationTitle:f,component:r,containerName:c,dropDocumentOutsideOption:d,screenKey:x}],rootName:s})},c))}):(0,i.jsx)("div",{}),p.length!=0?(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(K.default,{containerName:`${(p[a]||p[0]).containerName}`,isInitialResizable:!0,isResizePanel:R,children:R?(0,i.jsx)("div",{"data-key":S,children:(0,i.jsx)(V,{parentDirection:D,layoutName:`${e}_center-${u}`,parentLayoutName:e,containerName:`${(p[a]||p[0]).containerName}`,depth:u+1,rootRef:v,initialCenterComponents:p.map(({navigationTitle:c,component:r,containerName:f,dropDocumentOutsideOption:d,screenKey:x})=>({navigationTitle:c,component:r,containerName:f,dropDocumentOutsideOption:d,screenKey:x})),screenKey:S,rootName:s})}):(0,i.jsxs)(oe.default,{keyName:(p[a]||p[0]).containerName,isDefaultScrollStyle:!0,children:[!H&&(0,i.jsx)("div",{className:`${U.default["flex-split-screen-drag-box-title-wrapper-sticky"]}`,children:(0,i.jsxs)("div",{"data-is_split":R,"data-layout_name":e,"data-parent_layout_name":t,"data-container_name":`${(p[a]||p[0]).containerName}`,className:`${U.default["flex-split-screen-drag-box-title-wrapper"]}`,children:[(0,i.jsx)(ce.default,{"data-layout_name":e,layoutName:e,children:p.map((c,r)=>(0,i.jsx)(le.default,{onClose:f=>{M.current===r&&p.length===1?w.dropMovementEventSubject.next({state:"remove",targetContainerName:n,targetParentLayoutName:t,targetLayoutName:e}):(p.length===M.current+1&&P(M.current-1),z(d=>{const x=I(d,c.containerName,()=>{}),y=`${e}=${S}`,L=(0,l.getCurrentSplitScreenComponents)(s,y)||{afterDropTargetComponent:N,beforeDropTargetComponent:E,centerDropTargetComponent:d,direction:D};return(0,l.setSplitScreen)(s,y,{...L,centerDropTargetComponent:x}),x}))},isActive:a===r,children:(0,i.jsx)(se.default,{screenKey:c.screenKey,onClick:()=>{P(r)},containerName:c.containerName,dropDocumentOutsideOption:c.dropDocumentOutsideOption,targetComponent:c.component,navigationTitle:c.navigationTitle,"data-container-name":c.containerName,"data-layout-name":e,"data-parent-layout-name":t,dropEndCallback:({x:f,y:d,containerName:x})=>{if(!v.current||!b.current)return;const y=he({x:f,y:d,element:v.current}),L=ee({x:f,y:d,element:b.current});if(!y&&!L||!y&&L&&_.current.length>1){const A={};if(_.current.length>1){const{adjacentItem:B,adjacentIndex:G}=Oe(_.current,M.current);B&&M.current===r&&Object.assign(A,{x:f,y:d,targetComponent:B.component,nextContainerName:B.containerName,orderName:"center",dropTargetComponentEvent:{navigationTitle:B.navigationTitle,dropDocumentOutsideOption:B.dropDocumentOutsideOption,direction:D,screenKey:S}})}r===0?w.dropMovementEventSubject.next({state:"remove",targetContainerName:c.containerName,targetParentLayoutName:t,targetLayoutName:e,...A}):w.dropMovementEventSubject.next({state:"remove",targetContainerName:c.containerName,targetParentLayoutName:"",targetLayoutName:e,...A})}},children:c.navigationTitle})},c.navigationTitle+e+c.containerName))},e),(0,i.jsx)(me.default,{})]})}),(p[a]||p[0]).component]})},(p[a]||p[0]).containerName)}):(0,i.jsx)("div",{}),N.length!=0?(0,i.jsx)(i.Fragment,{children:N.map(({containerName:c,component:r,navigationTitle:f,dropDocumentOutsideOption:d,screenKey:x},y)=>(0,i.jsx)(K.default,{containerName:c,isInitialResizable:!0,isResizePanel:y!==N.length-1,children:(0,i.jsx)(V,{parentDirection:D,layoutName:`${e}_after-${u}`,parentLayoutName:e,containerName:c,depth:u+1,rootRef:v,screenKey:x,initialCenterComponents:[{navigationTitle:f,component:r,containerName:c,dropDocumentOutsideOption:d,screenKey:x}],rootName:s})},c))}):(0,i.jsx)("div",{})]}),g&&(0,i.jsx)("div",{className:`${U.default["flex-split-screen-boundary-container"]}`,style:{...g},children:"\u2B07\uFE0F\uB4DC\uB86D\uD558\uBA74 \uD654\uBA74\uC774 \uBD84\uD560\uB429\uB2C8\uB2E4."})]})})}