@byeolnaerim/flex-layout 0.0.9 → 0.0.12

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 (132) hide show
  1. package/dist/flex-layout/components/FlexLayout.cjs +1 -110
  2. package/dist/flex-layout/components/FlexLayout.d.ts +2 -1
  3. package/dist/flex-layout/components/FlexLayout.js +1 -85
  4. package/dist/flex-layout/components/FlexLayoutContainer.cjs +1 -262
  5. package/dist/flex-layout/components/FlexLayoutContainer.d.ts +1 -1
  6. package/dist/flex-layout/components/FlexLayoutContainer.js +1 -232
  7. package/dist/flex-layout/components/FlexLayoutDynamicHeight.cjs +1 -0
  8. package/dist/flex-layout/components/FlexLayoutDynamicHeight.d.ts +6 -0
  9. package/dist/flex-layout/components/FlexLayoutDynamicHeight.js +1 -0
  10. package/dist/flex-layout/components/FlexLayoutIFramePane.cjs +1 -68
  11. package/dist/flex-layout/components/FlexLayoutIFramePane.js +1 -44
  12. package/dist/flex-layout/components/FlexLayoutResizePanel.cjs +1 -246
  13. package/dist/flex-layout/components/FlexLayoutResizePanel.js +1 -216
  14. package/dist/flex-layout/components/FlexLayoutSplitScreen.cjs +1 -1252
  15. package/dist/flex-layout/components/FlexLayoutSplitScreen.d.ts +14 -1
  16. package/dist/flex-layout/components/FlexLayoutSplitScreen.js +1 -1236
  17. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBox.cjs +1 -532
  18. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBox.js +1 -509
  19. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxContainer.cjs +1 -55
  20. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxContainer.js +1 -25
  21. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxItem.cjs +1 -63
  22. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxItem.js +1 -33
  23. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxTitleMore.cjs +1 -53
  24. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxTitleMore.js +1 -23
  25. package/dist/flex-layout/components/FlexLayoutSplitScreenScrollBox.cjs +1 -133
  26. package/dist/flex-layout/components/FlexLayoutSplitScreenScrollBox.js +1 -107
  27. package/dist/flex-layout/components/FlexLayoutStickyBox.cjs +1 -245
  28. package/dist/flex-layout/components/FlexLayoutStickyBox.js +1 -229
  29. package/dist/flex-layout/components/index.cjs +1 -57
  30. package/dist/flex-layout/components/index.d.ts +1 -0
  31. package/dist/flex-layout/components/index.js +1 -17
  32. package/dist/flex-layout/hooks/index.cjs +1 -25
  33. package/dist/flex-layout/hooks/index.js +1 -3
  34. package/dist/flex-layout/hooks/useDrag.cjs +1 -289
  35. package/dist/flex-layout/hooks/useDrag.d.ts +15 -0
  36. package/dist/flex-layout/hooks/useDrag.js +1 -258
  37. package/dist/flex-layout/hooks/useFlexLayoutSplitScreen.cjs +1 -139
  38. package/dist/flex-layout/hooks/useFlexLayoutSplitScreen.js +1 -118
  39. package/dist/flex-layout/hooks/useListPaging.cjs +1 -212
  40. package/dist/flex-layout/hooks/useListPaging.js +1 -191
  41. package/dist/flex-layout/hooks/useSizes.cjs +1 -126
  42. package/dist/flex-layout/hooks/useSizes.d.ts +6 -3
  43. package/dist/flex-layout/hooks/useSizes.js +1 -101
  44. package/dist/flex-layout/index.cjs +1 -31
  45. package/dist/flex-layout/index.js +1 -6
  46. package/dist/flex-layout/providers/FlexLayoutContext.cjs +1 -49
  47. package/dist/flex-layout/providers/FlexLayoutContext.js +1 -24
  48. package/dist/flex-layout/providers/FlexLayoutHooks.cjs +1 -276
  49. package/dist/flex-layout/providers/FlexLayoutHooks.d.ts +5 -1
  50. package/dist/flex-layout/providers/FlexLayoutHooks.js +1 -263
  51. package/dist/flex-layout/providers/index.cjs +1 -23
  52. package/dist/flex-layout/providers/index.js +1 -2
  53. package/dist/flex-layout/store/FlexLayoutContainerStore.cjs +1 -257
  54. package/dist/flex-layout/store/FlexLayoutContainerStore.js +1 -206
  55. package/dist/flex-layout/store/index.cjs +1 -23
  56. package/dist/flex-layout/store/index.js +1 -2
  57. package/dist/flex-layout/styles/FlexLayout.module.css +499 -416
  58. package/dist/flex-layout/styles/sentinelStyle.module.css +11 -0
  59. package/dist/flex-layout/types/FlexDirectionTypes.cjs +1 -17
  60. package/dist/flex-layout/types/FlexDirectionTypes.js +0 -1
  61. package/dist/flex-layout/types/FlexLayoutTypes.cjs +1 -17
  62. package/dist/flex-layout/types/FlexLayoutTypes.d.ts +38 -2
  63. package/dist/flex-layout/types/FlexLayoutTypes.js +0 -1
  64. package/dist/flex-layout/utils/FlexLayoutUtils.cjs +1 -245
  65. package/dist/flex-layout/utils/FlexLayoutUtils.js +1 -211
  66. package/dist/flex-layout/utils/index.cjs +1 -23
  67. package/dist/flex-layout/utils/index.js +1 -2
  68. package/dist/index.cjs +1 -23
  69. package/dist/index.js +1 -2
  70. package/dist/types/css.d.cjs +0 -1
  71. package/dist/types/css.d.js +0 -1
  72. package/package.json +116 -113
  73. package/dist/flex-layout/components/FlexLayout.cjs.map +0 -1
  74. package/dist/flex-layout/components/FlexLayout.js.map +0 -1
  75. package/dist/flex-layout/components/FlexLayoutContainer.cjs.map +0 -1
  76. package/dist/flex-layout/components/FlexLayoutContainer.js.map +0 -1
  77. package/dist/flex-layout/components/FlexLayoutIFramePane.cjs.map +0 -1
  78. package/dist/flex-layout/components/FlexLayoutIFramePane.js.map +0 -1
  79. package/dist/flex-layout/components/FlexLayoutResizePanel.cjs.map +0 -1
  80. package/dist/flex-layout/components/FlexLayoutResizePanel.js.map +0 -1
  81. package/dist/flex-layout/components/FlexLayoutSplitScreen.cjs.map +0 -1
  82. package/dist/flex-layout/components/FlexLayoutSplitScreen.js.map +0 -1
  83. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBox.cjs.map +0 -1
  84. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBox.js.map +0 -1
  85. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxContainer.cjs.map +0 -1
  86. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxContainer.js.map +0 -1
  87. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxItem.cjs.map +0 -1
  88. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxItem.js.map +0 -1
  89. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxTitleMore.cjs.map +0 -1
  90. package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxTitleMore.js.map +0 -1
  91. package/dist/flex-layout/components/FlexLayoutSplitScreenScrollBox.cjs.map +0 -1
  92. package/dist/flex-layout/components/FlexLayoutSplitScreenScrollBox.js.map +0 -1
  93. package/dist/flex-layout/components/FlexLayoutStickyBox.cjs.map +0 -1
  94. package/dist/flex-layout/components/FlexLayoutStickyBox.js.map +0 -1
  95. package/dist/flex-layout/components/index.cjs.map +0 -1
  96. package/dist/flex-layout/components/index.js.map +0 -1
  97. package/dist/flex-layout/hooks/index.cjs.map +0 -1
  98. package/dist/flex-layout/hooks/index.js.map +0 -1
  99. package/dist/flex-layout/hooks/useDrag.cjs.map +0 -1
  100. package/dist/flex-layout/hooks/useDrag.js.map +0 -1
  101. package/dist/flex-layout/hooks/useFlexLayoutSplitScreen.cjs.map +0 -1
  102. package/dist/flex-layout/hooks/useFlexLayoutSplitScreen.js.map +0 -1
  103. package/dist/flex-layout/hooks/useListPaging.cjs.map +0 -1
  104. package/dist/flex-layout/hooks/useListPaging.js.map +0 -1
  105. package/dist/flex-layout/hooks/useSizes.cjs.map +0 -1
  106. package/dist/flex-layout/hooks/useSizes.js.map +0 -1
  107. package/dist/flex-layout/index.cjs.map +0 -1
  108. package/dist/flex-layout/index.js.map +0 -1
  109. package/dist/flex-layout/providers/FlexLayoutContext.cjs.map +0 -1
  110. package/dist/flex-layout/providers/FlexLayoutContext.js.map +0 -1
  111. package/dist/flex-layout/providers/FlexLayoutHooks.cjs.map +0 -1
  112. package/dist/flex-layout/providers/FlexLayoutHooks.js.map +0 -1
  113. package/dist/flex-layout/providers/index.cjs.map +0 -1
  114. package/dist/flex-layout/providers/index.js.map +0 -1
  115. package/dist/flex-layout/store/FlexLayoutContainerStore.cjs.map +0 -1
  116. package/dist/flex-layout/store/FlexLayoutContainerStore.js.map +0 -1
  117. package/dist/flex-layout/store/index.cjs.map +0 -1
  118. package/dist/flex-layout/store/index.js.map +0 -1
  119. package/dist/flex-layout/types/FlexDirectionTypes.cjs.map +0 -1
  120. package/dist/flex-layout/types/FlexDirectionTypes.js.map +0 -1
  121. package/dist/flex-layout/types/FlexLayoutTypes.cjs.map +0 -1
  122. package/dist/flex-layout/types/FlexLayoutTypes.js.map +0 -1
  123. package/dist/flex-layout/utils/FlexLayoutUtils.cjs.map +0 -1
  124. package/dist/flex-layout/utils/FlexLayoutUtils.js.map +0 -1
  125. package/dist/flex-layout/utils/index.cjs.map +0 -1
  126. package/dist/flex-layout/utils/index.js.map +0 -1
  127. package/dist/index.cjs.map +0 -1
  128. package/dist/index.js.map +0 -1
  129. package/dist/metafile-cjs.json +0 -1
  130. package/dist/metafile-esm.json +0 -1
  131. package/dist/types/css.d.cjs.map +0 -1
  132. package/dist/types/css.d.js.map +0 -1
@@ -1,416 +1,499 @@
1
- .flex-layout {
2
- display: flex;
3
- height: 100%;
4
- width: 100%;
5
- overflow: auto;
6
- overflow-wrap: revert;
7
- position: relative;
8
- /* -ms-overflow-style: none;
9
- scrollbar-width: none; */
10
- /* &::-webkit-scrollbar {
11
- display: none;
12
- } */
13
- &[data-direction='column'] {
14
- flex-direction: column;
15
- & > .flex-resize-panel {
16
- height: 4px;
17
- width: auto;
18
- cursor: ns-resize;
19
- &:hover > .hover,
20
- &:hover > .hover[data-is_hover],
21
- &:active > .hover {
22
- height: 3px;
23
- width: 100%;
24
- }
25
- }
26
- & > .flex-container > .flex-content-fit-wrapper {
27
- width: 100%;
28
- height: fit-content;
29
- & > * {
30
- width: 100%;
31
- height: fit-content;
32
- }
33
- }
34
- }
35
-
36
- &[data-direction='row'] {
37
- flex-direction: row;
38
- & > .flex-resize-panel {
39
- width: 4px;
40
- height: auto;
41
- cursor: ew-resize;
42
- &:hover > .hover,
43
- &:hover > .hover[data-is_hover],
44
- &:active > .hover {
45
- width: 3px;
46
- height: 100%;
47
- }
48
- }
49
- & > .flex-container > .flex-content-fit-wrapper {
50
- width: fit-content;
51
- height: 100%;
52
- & > * {
53
- width: fit-content;
54
- height: 100%;
55
- }
56
- }
57
- }
58
- & > .flex-container {
59
- overflow: hidden;
60
- box-sizing: border-box;
61
- &[data-is_resize_panel='true'] {
62
- flex: 1 1 0%;
63
- }
64
- &[data-is_resize_panel='false'] {
65
- flex: 0 0 0%;
66
- }
67
- & > *:not(.flex-content-fit-wrapper) {
68
- width: 100%;
69
- height: 100%;
70
- }
71
- }
72
- & .flex-resize-panel {
73
- background-color: rgb(115 115 115);
74
- z-index: 1001;
75
- display: flex;
76
- justify-content: center;
77
- align-items: center;
78
- flex: 0 0 0.1%;
79
- position: relative;
80
- -moz-user-select: -moz-none;
81
- -khtml-user-select: none;
82
- -webkit-user-select: none;
83
- -ms-user-select: none;
84
- user-select: none;
85
- right: 0;
86
- bottom: 0;
87
-
88
- &:hover,
89
- &:active {
90
- animation-name: drag-panel-hover;
91
- animation-fill-mode: forwards;
92
- animation-direction: normal;
93
- animation-duration: 0.3s;
94
- animation-iteration-count: 1;
95
- animation-timing-function: cubic-bezier(1, -0.37, 0.73, 0.8);
96
- }
97
-
98
- &:hover > .hover,
99
- &:hover > .hover[data-is_hover],
100
- &:active > .hover {
101
- background-color: #0066ffb5;
102
- z-index: 3002;
103
- position: absolute;
104
- display: block;
105
- opacity: 1;
106
- visibility: inherit;
107
- transition: all 1s;
108
- animation-name: drag-panel-hover-highlight;
109
- animation-fill-mode: forwards;
110
- animation-direction: normal;
111
- animation-duration: 0.3s;
112
- animation-iteration-count: 1;
113
- animation-timing-function: cubic-bezier(1, -0.37, 0.73, 0.8);
114
- }
115
-
116
- & > .hover {
117
- opacity: 0;
118
- visibility: hidden;
119
- transition: all 1s;
120
- }
121
- &.bottom-cylinder {
122
- &::after {
123
- border-bottom-left-radius: 15px;
124
- border-bottom-right-radius: 15px;
125
- bottom: 100%;
126
- }
127
- }
128
- &.bottom-cylinder-reverse {
129
- &::after {
130
- border-top-left-radius: 15px;
131
- border-top-right-radius: 15px;
132
- bottom: 100%;
133
- }
134
- }
135
- &.top-cylinder {
136
- border-bottom-left-radius: 15px;
137
- border-bottom-right-radius: 15px;
138
- }
139
- &.right-cylinder {
140
- &::after {
141
- border-top-right-radius: 15px;
142
- border-bottom-right-radius: 15px;
143
- left: 100%;
144
- }
145
- }
146
- &.left-cylinder {
147
- &::after {
148
- right: 100%;
149
- }
150
- }
151
- &.bottom-cylinder,
152
- &.bottom-cylinder-reverse,
153
- &.top-cylinder,
154
- &.left-cylinder,
155
- &.right-cylinder {
156
- &::after {
157
- background-color: hsla(0, 0%, 54%, 0.32);
158
- content: ' ';
159
- position: absolute;
160
- z-index: 3002;
161
- }
162
- &:hover,
163
- &:hover::after,
164
- &:active,
165
- &:active::after {
166
- background-color: rgb(0 102 255 / 45%);
167
- transition: background-color 1s;
168
- }
169
- }
170
- &.bottom-cylinder,
171
- &.top-cylinder,
172
- &.bottom-cylinder-reverse {
173
- &::after {
174
- height: 1.1rem;
175
- width: 60%;
176
- }
177
- &:not(.bottom-cylinder-reverse)::after {
178
- top: 0;
179
- }
180
- }
181
- &.left-cylinder,
182
- &.right-cylinder {
183
- &::after {
184
- width: 1.1rem;
185
- height: 60%;
186
- }
187
- }
188
- }
189
- }
190
-
191
- @keyframes drag-panel-hover {
192
- 0% {
193
- background-color: #b1b1b1d6;
194
- }
195
-
196
- 10% {
197
- background-color: #b1b1b1ba;
198
- }
199
-
200
- 20% {
201
- background-color: #b1b1b194;
202
- }
203
-
204
- 40% {
205
- background-color: #b1b1b17d;
206
- }
207
-
208
- 60% {
209
- background-color: #b1b1b152;
210
- }
211
-
212
- 80% {
213
- background-color: #b1b1b130;
214
- }
215
-
216
- 100% {
217
- background-color: #b1b1b100;
218
- animation-play-state: paused;
219
- }
220
- }
221
-
222
- @keyframes drag-panel-hover-highlight {
223
- 0% {
224
- opacity: 0;
225
- }
226
-
227
- 10% {
228
- opacity: 0.1;
229
- }
230
-
231
- 20% {
232
- opacity: 0.2;
233
- }
234
-
235
- 40% {
236
- opacity: 0.4;
237
- }
238
-
239
- 60% {
240
- opacity: 0.6;
241
- }
242
-
243
- 80% {
244
- opacity: 0.8;
245
- }
246
-
247
- 100% {
248
- opacity: 1;
249
- animation-play-state: paused;
250
- }
251
- }
252
-
253
- .flex-split-screen {
254
- width: 100%;
255
- height: 100%;
256
- position: relative;
257
- & .flex-split-screen-boundary-container {
258
- position: absolute;
259
- font-family: Arial, sans-serif;
260
- transition:
261
- background-color 0.3s,
262
- border-color 0.3s;
263
- color: #00acc1;
264
- border: 2px dashed #00acc1;
265
- border-radius: 10px;
266
- background-color: #0014ff17;
267
- font-size: 1.5rem;
268
- display: flex;
269
- align-items: center;
270
- justify-content: center;
271
- font-weight: bold;
272
- z-index: 9001;
273
- }
274
- & .flex-split-screen-drag-box-title-wrapper-sticky {
275
- position: sticky;
276
- top: 0;
277
- z-index: 2001;
278
- background: #f0f0f0;
279
- }
280
- & .flex-split-screen-drag-box-title-wrapper {
281
- html[data-color-scheme='dark'] & {
282
- background: #3c3c3c;
283
- box-shadow: 0px 1px 20px 0px #1e1e1e;
284
- }
285
- html[data-color-scheme='light'] & {
286
- background: #edf1f5;
287
- box-shadow: 0px 1px 20px 0px #e5e5e5;
288
- }
289
- scrollbar-width: initial;
290
- scrollbar-color: initial;
291
- display: flex;
292
- justify-content: space-between;
293
- transition:
294
- background 0.3s,
295
- color 0.3s,
296
- box-shadow 0.3s;
297
- position: relative;
298
- border-bottom: 1px solid #e5e5e5;
299
- & .flex-split-screen-drag-box-title-container {
300
- display: flex;
301
- width: 100%;
302
- background: inherit;
303
- }
304
- }
305
- }
306
- .flex-split-screen-drag-box-title-item {
307
- display: flex;
308
- align-items: baseline;
309
- padding-right: 0.5rem;
310
- padding-left: 0.1rem;
311
- &:last-child:not(:first-child) {
312
- border-right: 2px solid #00000012;
313
- }
314
- &:not(.active) {
315
- box-shadow: inset 0 0 20px 20px #00000000;
316
- border-bottom: 1px solid #007fff40;
317
- }
318
- &:hover {
319
- html[data-color-scheme='dark'] & {
320
- background: #494949;
321
- }
322
- html[data-color-scheme='light'] & {
323
- background: #e0e0e0;
324
- }
325
- box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
326
- }
327
- &:active {
328
- box-shadow: inset 0px 0px 17px 0px #00000029;
329
- transform: scale(0.97);
330
- }
331
- & button {
332
- background: none;
333
- border: none;
334
- color: #bbbbbb;
335
- font-weight: bold;
336
- font-family: none;
337
- font-size: 0.9rem;
338
- cursor: pointer;
339
- padding: 0 0.25rem;
340
- }
341
- &.active {
342
- html[data-color-scheme='dark'] & {
343
- color: #b9af3a;
344
- }
345
- html[data-color-scheme='light'] & {
346
- color: #494300;
347
- }
348
- font-weight: bold;
349
- box-shadow: 0 -2px 4px rgba(0, 0, 0, 0.1);
350
- & button {
351
- color: #5f5f5f;
352
- }
353
- }
354
- }
355
- .flex-split-screen-drag-box-title-more {
356
- display: flex;
357
- flex-direction: column;
358
- line-height: 0.3;
359
- padding: 0rem 0.65rem 0.5rem;
360
- font-size: 1.2rem;
361
- font-weight: bold;
362
- border: none;
363
- background: none;
364
- color: black;
365
- justify-content: space-evenly;
366
- cursor: pointer;
367
- background: inherit;
368
- &:hover {
369
- background: #797979;
370
- box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
371
- }
372
- &:active {
373
- box-shadow: inset 0px 0px 17px 0px #00000029;
374
- transform: scale(0.97);
375
- }
376
- }
377
- .flex-split-screen-drag-box {
378
- align-self: center;
379
- -webkit-touch-callout: none; /* iOS */
380
- -webkit-user-select: none; /* Safari */
381
- -khtml-user-select: none; /* Konqueror */
382
- -moz-user-select: none; /* Firefox */
383
- -ms-user-select: none; /* IE 10+ */
384
- user-select: none; /* Standard syntax */
385
- /* pointer-events: none; */
386
- -webkit-tap-highlight-color: transparent;
387
- /* touch-action: none; */
388
- -webkit-touch-callout: none;
389
- }
390
- .flex-split-screen-drag-box-clone {
391
- -webkit-touch-callout: none; /* iOS */
392
- -webkit-user-select: none; /* Safari */
393
- -khtml-user-select: none; /* Konqueror */
394
- -moz-user-select: none; /* Firefox */
395
- -ms-user-select: none; /* IE 10+ */
396
- user-select: none; /* Standard syntax */
397
- /* pointer-events: none; */
398
- -webkit-tap-highlight-color: transparent;
399
- /* touch-action: none; */
400
- -webkit-touch-callout: none;
401
-
402
- display: flex;
403
- background-color: #adadad;
404
- flex-direction: column;
405
- padding: 0.2rem 0.4rem;
406
- border-radius: 7px;
407
- line-height: 99%;
408
- z-index: 9001;
409
- & span:first-child {
410
- font-weight: bold;
411
- font-size: 0.85rem;
412
- }
413
- & span:last-child {
414
- font-size: 0.75rem;
415
- }
416
- }
1
+ .flex-layout {
2
+ display: flex;
3
+ height: 100%;
4
+ width: 100%;
5
+ overflow-wrap: revert;
6
+ position: relative;
7
+ --flex-z-resize: 11;
8
+ --flex-z-resize-hover: 12;
9
+ --flex-z-resize-cylinder: 13;
10
+ &[data-scroll-mode="layout"] {
11
+ overflow: auto;
12
+ }
13
+ &[data-scroll-mode="window"] {
14
+ overflow: visible;
15
+ }
16
+ /* -ms-overflow-style: none;
17
+ scrollbar-width: none; */
18
+ /* &::-webkit-scrollbar {
19
+ display: none;
20
+ } */
21
+ &[data-direction="column"] {
22
+ flex-direction: column;
23
+ & > .flex-resize-panel {
24
+ height: 1px;
25
+ min-height: 1px;
26
+ width: auto;
27
+ cursor: ns-resize;
28
+ &:hover > .hover,
29
+ & > .hover[data-is_hover],
30
+ &:active > .hover {
31
+ height: 3px;
32
+ width: 100%;
33
+ }
34
+ }
35
+ & > .flex-container > .flex-content-fit-wrapper {
36
+ width: 100%;
37
+ height: fit-content;
38
+ & > * {
39
+ width: 100%;
40
+ height: fit-content;
41
+ }
42
+ }
43
+ }
44
+
45
+ &[data-direction="row"] {
46
+ flex-direction: row;
47
+ & > .flex-resize-panel {
48
+ width: 1px;
49
+ min-width: 1px;
50
+ height: auto;
51
+ cursor: ew-resize;
52
+ &:hover > .hover,
53
+ & > .hover[data-is_hover],
54
+ &:active > .hover {
55
+ width: 3px;
56
+ height: 100%;
57
+ }
58
+ }
59
+ & > .flex-container > .flex-content-fit-wrapper {
60
+ width: fit-content;
61
+ height: 100%;
62
+ & > * {
63
+ width: fit-content;
64
+ height: 100%;
65
+ }
66
+ }
67
+ }
68
+ & > .flex-container {
69
+ overflow: hidden;
70
+ box-sizing: border-box;
71
+ &[data-is_sticky="true"] {
72
+ position: sticky;
73
+ z-index: calc(var(--flex-z-resize) + 1);
74
+ }
75
+ &[data-is_resize_panel="true"] {
76
+ flex: 1 1 0%;
77
+ }
78
+ &[data-is_resize_panel="false"] {
79
+ flex: 0 0 0%;
80
+ }
81
+ & > *:not(.flex-content-fit-wrapper) {
82
+ width: 100%;
83
+ height: 100%;
84
+ }
85
+ }
86
+ & > .flex-container[data-is_sticky="true"] + .flex-resize-panel,
87
+ & > .flex-resize-panel:has(+ .flex-container[data-is_sticky="true"]) {
88
+ --flex-z-resize-current: calc(var(--flex-z-resize) + 1);
89
+ --flex-z-resize-hover-current: calc(var(--flex-z-resize-hover) + 1);
90
+ --flex-z-resize-cylinder-current: calc(
91
+ var(--flex-z-resize-cylinder) + 1
92
+ );
93
+ }
94
+ & .flex-resize-panel {
95
+ --flex-z-resize-current: var(--flex-z-resize);
96
+ --flex-z-resize-hover-current: var(--flex-z-resize-hover);
97
+ --flex-z-resize-cylinder-current: var(--flex-z-resize-cylinder);
98
+
99
+ background-color: rgb(115 115 115);
100
+ z-index: var(--flex-z-resize-current);
101
+ display: flex;
102
+ justify-content: center;
103
+ align-items: center;
104
+ flex: 0 0 1px;
105
+ position: relative;
106
+ -moz-user-select: -moz-none;
107
+ -khtml-user-select: none;
108
+ -webkit-user-select: none;
109
+ -ms-user-select: none;
110
+ user-select: none;
111
+ right: 0;
112
+ bottom: 0;
113
+
114
+ &:hover,
115
+ &:active {
116
+ animation-name: drag-panel-hover;
117
+ animation-fill-mode: forwards;
118
+ animation-direction: normal;
119
+ animation-duration: 0.3s;
120
+ animation-iteration-count: 1;
121
+ animation-timing-function: cubic-bezier(1, -0.37, 0.73, 0.8);
122
+ }
123
+
124
+ &:hover > .hover,
125
+ & > .hover[data-is_hover],
126
+ &:active > .hover {
127
+ background-color: #0066ffb5;
128
+ z-index: var(--flex-z-resize-hover-current);
129
+ position: absolute;
130
+ display: block;
131
+ opacity: 1;
132
+ visibility: inherit;
133
+ transition: all 1s;
134
+ animation-name: drag-panel-hover-highlight;
135
+ animation-fill-mode: forwards;
136
+ animation-direction: normal;
137
+ animation-duration: 0.3s;
138
+ animation-iteration-count: 1;
139
+ animation-timing-function: cubic-bezier(1, -0.37, 0.73, 0.8);
140
+ }
141
+
142
+ & > .hover {
143
+ opacity: 0;
144
+ visibility: hidden;
145
+ transition: all 1s;
146
+ }
147
+
148
+ &.top-cylinder,
149
+ &.top-cylinder-reverse,
150
+ &.bottom-cylinder,
151
+ &.bottom-cylinder-reverse,
152
+ &.left-cylinder,
153
+ &.left-cylinder-reverse,
154
+ &.right-cylinder,
155
+ &.right-cylinder-reverse {
156
+ /* 실린더 크기(기존 1.1rem 유지) */
157
+ --cyl-size: 1.1rem;
158
+ /* 방향 기준 길이(기존 60% 유지) */
159
+ --cyl-span: 60%;
160
+
161
+ &::after {
162
+ content: "";
163
+ position: absolute;
164
+ z-index: var(--flex-z-resize-cylinder-current);
165
+ background-color: hsla(0, 0%, 54%, 0.32);
166
+ }
167
+ &:hover,
168
+ &:hover::after,
169
+ &:active,
170
+ &:active::after {
171
+ background-color: rgb(0 102 255 / 45%);
172
+ transition: background-color 1s;
173
+ }
174
+ }
175
+
176
+ /* 수평 패널(가로 선)용 실린더: 위/아래로 튀어나오게 */
177
+ &.top-cylinder,
178
+ &.top-cylinder-reverse,
179
+ &.bottom-cylinder,
180
+ &.bottom-cylinder-reverse {
181
+ &::after {
182
+ height: var(--cyl-size);
183
+ width: var(--cyl-span);
184
+
185
+ /* transform 없이 가운데 정렬: left 20% + width 60% */
186
+ left: 20%;
187
+ }
188
+ }
189
+
190
+ /* 위로 튀어나오는(top) */
191
+ &.top-cylinder,
192
+ &.top-cylinder-reverse {
193
+ &::after {
194
+ bottom: 100%;
195
+ }
196
+ }
197
+ /* 아래로 튀어나오는(bottom) */
198
+ &.bottom-cylinder,
199
+ &.bottom-cylinder-reverse {
200
+ &::after {
201
+ top: 100%;
202
+ }
203
+ }
204
+
205
+ /* 라운딩(기본/리버스) */
206
+ &.top-cylinder::after {
207
+ border-top-left-radius: 15px;
208
+ border-top-right-radius: 15px;
209
+ }
210
+ &.top-cylinder-reverse::after {
211
+ border-bottom-left-radius: 15px;
212
+ border-bottom-right-radius: 15px;
213
+ }
214
+
215
+ &.bottom-cylinder::after {
216
+ border-bottom-left-radius: 15px;
217
+ border-bottom-right-radius: 15px;
218
+ }
219
+ &.bottom-cylinder-reverse::after {
220
+ border-top-left-radius: 15px;
221
+ border-top-right-radius: 15px;
222
+ }
223
+
224
+ /* 수직 패널(세로 선)용 실린더: 좌/우로 튀어나오게 */
225
+ &.left-cylinder,
226
+ &.left-cylinder-reverse,
227
+ &.right-cylinder,
228
+ &.right-cylinder-reverse {
229
+ &::after {
230
+ width: var(--cyl-size);
231
+ height: var(--cyl-span);
232
+
233
+ /* transform 없이 가운데 정렬: top 20% + height 60% */
234
+ top: 20%;
235
+ }
236
+ }
237
+
238
+ /* 오른쪽으로 튀어나오는(right) */
239
+ &.right-cylinder,
240
+ &.right-cylinder-reverse {
241
+ &::after {
242
+ left: 100%;
243
+ }
244
+ }
245
+ /* 왼쪽으로 튀어나오는(left) */
246
+ &.left-cylinder,
247
+ &.left-cylinder-reverse {
248
+ &::after {
249
+ right: 100%;
250
+ }
251
+ }
252
+
253
+ /* 라운딩(기본/리버스) */
254
+ &.right-cylinder::after {
255
+ border-top-right-radius: 15px;
256
+ border-bottom-right-radius: 15px;
257
+ }
258
+ &.right-cylinder-reverse::after {
259
+ border-top-left-radius: 15px;
260
+ border-bottom-left-radius: 15px;
261
+ }
262
+
263
+ &.left-cylinder::after {
264
+ border-top-left-radius: 15px;
265
+ border-bottom-left-radius: 15px;
266
+ }
267
+ &.left-cylinder-reverse::after {
268
+ border-top-right-radius: 15px;
269
+ border-bottom-right-radius: 15px;
270
+ }
271
+ }
272
+ }
273
+
274
+ @keyframes drag-panel-hover {
275
+ 0% {
276
+ background-color: #b1b1b1d6;
277
+ }
278
+
279
+ 10% {
280
+ background-color: #b1b1b1ba;
281
+ }
282
+
283
+ 20% {
284
+ background-color: #b1b1b194;
285
+ }
286
+
287
+ 40% {
288
+ background-color: #b1b1b17d;
289
+ }
290
+
291
+ 60% {
292
+ background-color: #b1b1b152;
293
+ }
294
+
295
+ 80% {
296
+ background-color: #b1b1b130;
297
+ }
298
+
299
+ 100% {
300
+ background-color: #b1b1b100;
301
+ animation-play-state: paused;
302
+ }
303
+ }
304
+
305
+ @keyframes drag-panel-hover-highlight {
306
+ 0% {
307
+ opacity: 0;
308
+ }
309
+
310
+ 10% {
311
+ opacity: 0.1;
312
+ }
313
+
314
+ 20% {
315
+ opacity: 0.2;
316
+ }
317
+
318
+ 40% {
319
+ opacity: 0.4;
320
+ }
321
+
322
+ 60% {
323
+ opacity: 0.6;
324
+ }
325
+
326
+ 80% {
327
+ opacity: 0.8;
328
+ }
329
+
330
+ 100% {
331
+ opacity: 1;
332
+ animation-play-state: paused;
333
+ }
334
+ }
335
+
336
+ .flex-split-screen {
337
+ width: 100%;
338
+ height: 100%;
339
+ position: relative;
340
+ & .flex-split-screen-boundary-container {
341
+ position: absolute;
342
+ font-family: Arial, sans-serif;
343
+ transition:
344
+ background-color 0.3s,
345
+ border-color 0.3s;
346
+ color: #00acc1;
347
+ border: 2px dashed #00acc1;
348
+ border-radius: 10px;
349
+ background-color: #0014ff17;
350
+ font-size: 1.5rem;
351
+ display: flex;
352
+ align-items: center;
353
+ justify-content: center;
354
+ font-weight: bold;
355
+ z-index: 9001;
356
+ }
357
+ & .flex-split-screen-drag-box-title-wrapper-sticky {
358
+ position: sticky;
359
+ top: 0;
360
+ z-index: 15;
361
+ background: #f0f0f0;
362
+ }
363
+ & .flex-split-screen-drag-box-title-wrapper {
364
+ html[data-color-scheme="dark"] & {
365
+ background: #3c3c3c;
366
+ box-shadow: 0px 1px 20px 0px #1e1e1e;
367
+ }
368
+ html[data-color-scheme="light"] & {
369
+ background: #edf1f5;
370
+ box-shadow: 0px 1px 20px 0px #e5e5e5;
371
+ }
372
+ scrollbar-width: initial;
373
+ scrollbar-color: initial;
374
+ display: flex;
375
+ justify-content: space-between;
376
+ transition:
377
+ background 0.3s,
378
+ color 0.3s,
379
+ box-shadow 0.3s;
380
+ position: relative;
381
+ border-bottom: 1px solid #e5e5e5;
382
+ & .flex-split-screen-drag-box-title-container {
383
+ display: flex;
384
+ width: 100%;
385
+ background: inherit;
386
+ }
387
+ }
388
+ }
389
+ .flex-split-screen-drag-box-title-item {
390
+ display: flex;
391
+ align-items: baseline;
392
+ padding-right: 0.5rem;
393
+ padding-left: 0.1rem;
394
+ &:last-child:not(:first-child) {
395
+ border-right: 2px solid #00000012;
396
+ }
397
+ &:not(.active) {
398
+ box-shadow: inset 0 0 20px 20px #00000000;
399
+ border-bottom: 1px solid #007fff40;
400
+ }
401
+ &:hover {
402
+ html[data-color-scheme="dark"] & {
403
+ background: #494949;
404
+ }
405
+ html[data-color-scheme="light"] & {
406
+ background: #e0e0e0;
407
+ }
408
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
409
+ }
410
+ &:active {
411
+ box-shadow: inset 0px 0px 17px 0px #00000029;
412
+ transform: scale(0.97);
413
+ }
414
+ & button {
415
+ background: none;
416
+ border: none;
417
+ color: #bbbbbb;
418
+ font-weight: bold;
419
+ font-family: none;
420
+ font-size: 0.9rem;
421
+ cursor: pointer;
422
+ padding: 0 0.25rem;
423
+ }
424
+ &.active {
425
+ html[data-color-scheme="dark"] & {
426
+ color: #b9af3a;
427
+ }
428
+ html[data-color-scheme="light"] & {
429
+ color: #494300;
430
+ }
431
+ font-weight: bold;
432
+ box-shadow: 0 -2px 4px rgba(0, 0, 0, 0.1);
433
+ & button {
434
+ color: #5f5f5f;
435
+ }
436
+ }
437
+ }
438
+ .flex-split-screen-drag-box-title-more {
439
+ display: flex;
440
+ flex-direction: column;
441
+ line-height: 0.3;
442
+ padding: 0rem 0.65rem 0.5rem;
443
+ font-size: 1.2rem;
444
+ font-weight: bold;
445
+ border: none;
446
+ background: none;
447
+ color: black;
448
+ justify-content: space-evenly;
449
+ cursor: pointer;
450
+ background: inherit;
451
+ &:hover {
452
+ background: #797979;
453
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
454
+ }
455
+ &:active {
456
+ box-shadow: inset 0px 0px 17px 0px #00000029;
457
+ transform: scale(0.97);
458
+ }
459
+ }
460
+ .flex-split-screen-drag-box {
461
+ align-self: center;
462
+ -webkit-touch-callout: none; /* iOS */
463
+ -webkit-user-select: none; /* Safari */
464
+ -khtml-user-select: none; /* Konqueror */
465
+ -moz-user-select: none; /* Firefox */
466
+ -ms-user-select: none; /* IE 10+ */
467
+ user-select: none; /* Standard syntax */
468
+ /* pointer-events: none; */
469
+ -webkit-tap-highlight-color: transparent;
470
+ /* touch-action: none; */
471
+ -webkit-touch-callout: none;
472
+ }
473
+ .flex-split-screen-drag-box-clone {
474
+ -webkit-touch-callout: none; /* iOS */
475
+ -webkit-user-select: none; /* Safari */
476
+ -khtml-user-select: none; /* Konqueror */
477
+ -moz-user-select: none; /* Firefox */
478
+ -ms-user-select: none; /* IE 10+ */
479
+ user-select: none; /* Standard syntax */
480
+ /* pointer-events: none; */
481
+ -webkit-tap-highlight-color: transparent;
482
+ /* touch-action: none; */
483
+ -webkit-touch-callout: none;
484
+
485
+ display: flex;
486
+ background-color: #adadad;
487
+ flex-direction: column;
488
+ padding: 0.2rem 0.4rem;
489
+ border-radius: 7px;
490
+ line-height: 99%;
491
+ z-index: 9001;
492
+ & span:first-child {
493
+ font-weight: bold;
494
+ font-size: 0.85rem;
495
+ }
496
+ & span:last-child {
497
+ font-size: 0.75rem;
498
+ }
499
+ }