@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,416 +1,473 @@
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: 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[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[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[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
+
122
+ &.top-cylinder,
123
+ &.top-cylinder-reverse,
124
+ &.bottom-cylinder,
125
+ &.bottom-cylinder-reverse,
126
+ &.left-cylinder,
127
+ &.left-cylinder-reverse,
128
+ &.right-cylinder,
129
+ &.right-cylinder-reverse {
130
+ /* 실린더 크기(기존 1.1rem 유지) */
131
+ --cyl-size: 1.1rem;
132
+ /* 선 방향 기준 길이(기존 60% 유지) */
133
+ --cyl-span: 60%;
134
+
135
+ &::after {
136
+ content: "";
137
+ position: absolute;
138
+ z-index: 3002;
139
+ background-color: hsla(0, 0%, 54%, 0.32);
140
+ }
141
+ &:hover,
142
+ &:hover::after,
143
+ &:active,
144
+ &:active::after {
145
+ background-color: rgb(0 102 255 / 45%);
146
+ transition: background-color 1s;
147
+ }
148
+ }
149
+
150
+ /* 수평 패널(가로 선)용 실린더: 위/아래로 튀어나오게 */
151
+ &.top-cylinder,
152
+ &.top-cylinder-reverse,
153
+ &.bottom-cylinder,
154
+ &.bottom-cylinder-reverse {
155
+ &::after {
156
+ height: var(--cyl-size);
157
+ width: var(--cyl-span);
158
+
159
+ /* transform 없이 가운데 정렬: left 20% + width 60% */
160
+ left: 20%;
161
+ }
162
+ }
163
+
164
+ /* 위로 튀어나오는(top) */
165
+ &.top-cylinder,
166
+ &.top-cylinder-reverse {
167
+ &::after {
168
+ bottom: 100%;
169
+ }
170
+ }
171
+ /* 아래로 튀어나오는(bottom) */
172
+ &.bottom-cylinder,
173
+ &.bottom-cylinder-reverse {
174
+ &::after {
175
+ top: 100%;
176
+ }
177
+ }
178
+
179
+ /* 라운딩(기본/리버스) */
180
+ &.top-cylinder::after {
181
+ border-top-left-radius: 15px;
182
+ border-top-right-radius: 15px;
183
+ }
184
+ &.top-cylinder-reverse::after {
185
+ border-bottom-left-radius: 15px;
186
+ border-bottom-right-radius: 15px;
187
+ }
188
+
189
+ &.bottom-cylinder::after {
190
+ border-bottom-left-radius: 15px;
191
+ border-bottom-right-radius: 15px;
192
+ }
193
+ &.bottom-cylinder-reverse::after {
194
+ border-top-left-radius: 15px;
195
+ border-top-right-radius: 15px;
196
+ }
197
+
198
+ /* 수직 패널(세로 선)용 실린더: 좌/우로 튀어나오게 */
199
+ &.left-cylinder,
200
+ &.left-cylinder-reverse,
201
+ &.right-cylinder,
202
+ &.right-cylinder-reverse {
203
+ &::after {
204
+ width: var(--cyl-size);
205
+ height: var(--cyl-span);
206
+
207
+ /* transform 없이 가운데 정렬: top 20% + height 60% */
208
+ top: 20%;
209
+ }
210
+ }
211
+
212
+ /* 오른쪽으로 튀어나오는(right) */
213
+ &.right-cylinder,
214
+ &.right-cylinder-reverse {
215
+ &::after {
216
+ left: 100%;
217
+ }
218
+ }
219
+ /* 왼쪽으로 튀어나오는(left) */
220
+ &.left-cylinder,
221
+ &.left-cylinder-reverse {
222
+ &::after {
223
+ right: 100%;
224
+ }
225
+ }
226
+
227
+ /* 라운딩(기본/리버스) */
228
+ &.right-cylinder::after {
229
+ border-top-right-radius: 15px;
230
+ border-bottom-right-radius: 15px;
231
+ }
232
+ &.right-cylinder-reverse::after {
233
+ border-top-left-radius: 15px;
234
+ border-bottom-left-radius: 15px;
235
+ }
236
+
237
+ &.left-cylinder::after {
238
+ border-top-left-radius: 15px;
239
+ border-bottom-left-radius: 15px;
240
+ }
241
+ &.left-cylinder-reverse::after {
242
+ border-top-right-radius: 15px;
243
+ border-bottom-right-radius: 15px;
244
+ }
245
+ }
246
+ }
247
+
248
+ @keyframes drag-panel-hover {
249
+ 0% {
250
+ background-color: #b1b1b1d6;
251
+ }
252
+
253
+ 10% {
254
+ background-color: #b1b1b1ba;
255
+ }
256
+
257
+ 20% {
258
+ background-color: #b1b1b194;
259
+ }
260
+
261
+ 40% {
262
+ background-color: #b1b1b17d;
263
+ }
264
+
265
+ 60% {
266
+ background-color: #b1b1b152;
267
+ }
268
+
269
+ 80% {
270
+ background-color: #b1b1b130;
271
+ }
272
+
273
+ 100% {
274
+ background-color: #b1b1b100;
275
+ animation-play-state: paused;
276
+ }
277
+ }
278
+
279
+ @keyframes drag-panel-hover-highlight {
280
+ 0% {
281
+ opacity: 0;
282
+ }
283
+
284
+ 10% {
285
+ opacity: 0.1;
286
+ }
287
+
288
+ 20% {
289
+ opacity: 0.2;
290
+ }
291
+
292
+ 40% {
293
+ opacity: 0.4;
294
+ }
295
+
296
+ 60% {
297
+ opacity: 0.6;
298
+ }
299
+
300
+ 80% {
301
+ opacity: 0.8;
302
+ }
303
+
304
+ 100% {
305
+ opacity: 1;
306
+ animation-play-state: paused;
307
+ }
308
+ }
309
+
310
+ .flex-split-screen {
311
+ width: 100%;
312
+ height: 100%;
313
+ position: relative;
314
+ & .flex-split-screen-boundary-container {
315
+ position: absolute;
316
+ font-family: Arial, sans-serif;
317
+ transition:
318
+ background-color 0.3s,
319
+ border-color 0.3s;
320
+ color: #00acc1;
321
+ border: 2px dashed #00acc1;
322
+ border-radius: 10px;
323
+ background-color: #0014ff17;
324
+ font-size: 1.5rem;
325
+ display: flex;
326
+ align-items: center;
327
+ justify-content: center;
328
+ font-weight: bold;
329
+ z-index: 9001;
330
+ }
331
+ & .flex-split-screen-drag-box-title-wrapper-sticky {
332
+ position: sticky;
333
+ top: 0;
334
+ z-index: 2001;
335
+ background: #f0f0f0;
336
+ }
337
+ & .flex-split-screen-drag-box-title-wrapper {
338
+ html[data-color-scheme="dark"] & {
339
+ background: #3c3c3c;
340
+ box-shadow: 0px 1px 20px 0px #1e1e1e;
341
+ }
342
+ html[data-color-scheme="light"] & {
343
+ background: #edf1f5;
344
+ box-shadow: 0px 1px 20px 0px #e5e5e5;
345
+ }
346
+ scrollbar-width: initial;
347
+ scrollbar-color: initial;
348
+ display: flex;
349
+ justify-content: space-between;
350
+ transition:
351
+ background 0.3s,
352
+ color 0.3s,
353
+ box-shadow 0.3s;
354
+ position: relative;
355
+ border-bottom: 1px solid #e5e5e5;
356
+ & .flex-split-screen-drag-box-title-container {
357
+ display: flex;
358
+ width: 100%;
359
+ background: inherit;
360
+ }
361
+ }
362
+ }
363
+ .flex-split-screen-drag-box-title-item {
364
+ display: flex;
365
+ align-items: baseline;
366
+ padding-right: 0.5rem;
367
+ padding-left: 0.1rem;
368
+ &:last-child:not(:first-child) {
369
+ border-right: 2px solid #00000012;
370
+ }
371
+ &:not(.active) {
372
+ box-shadow: inset 0 0 20px 20px #00000000;
373
+ border-bottom: 1px solid #007fff40;
374
+ }
375
+ &:hover {
376
+ html[data-color-scheme="dark"] & {
377
+ background: #494949;
378
+ }
379
+ html[data-color-scheme="light"] & {
380
+ background: #e0e0e0;
381
+ }
382
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
383
+ }
384
+ &:active {
385
+ box-shadow: inset 0px 0px 17px 0px #00000029;
386
+ transform: scale(0.97);
387
+ }
388
+ & button {
389
+ background: none;
390
+ border: none;
391
+ color: #bbbbbb;
392
+ font-weight: bold;
393
+ font-family: none;
394
+ font-size: 0.9rem;
395
+ cursor: pointer;
396
+ padding: 0 0.25rem;
397
+ }
398
+ &.active {
399
+ html[data-color-scheme="dark"] & {
400
+ color: #b9af3a;
401
+ }
402
+ html[data-color-scheme="light"] & {
403
+ color: #494300;
404
+ }
405
+ font-weight: bold;
406
+ box-shadow: 0 -2px 4px rgba(0, 0, 0, 0.1);
407
+ & button {
408
+ color: #5f5f5f;
409
+ }
410
+ }
411
+ }
412
+ .flex-split-screen-drag-box-title-more {
413
+ display: flex;
414
+ flex-direction: column;
415
+ line-height: 0.3;
416
+ padding: 0rem 0.65rem 0.5rem;
417
+ font-size: 1.2rem;
418
+ font-weight: bold;
419
+ border: none;
420
+ background: none;
421
+ color: black;
422
+ justify-content: space-evenly;
423
+ cursor: pointer;
424
+ background: inherit;
425
+ &:hover {
426
+ background: #797979;
427
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
428
+ }
429
+ &:active {
430
+ box-shadow: inset 0px 0px 17px 0px #00000029;
431
+ transform: scale(0.97);
432
+ }
433
+ }
434
+ .flex-split-screen-drag-box {
435
+ align-self: center;
436
+ -webkit-touch-callout: none; /* iOS */
437
+ -webkit-user-select: none; /* Safari */
438
+ -khtml-user-select: none; /* Konqueror */
439
+ -moz-user-select: none; /* Firefox */
440
+ -ms-user-select: none; /* IE 10+ */
441
+ user-select: none; /* Standard syntax */
442
+ /* pointer-events: none; */
443
+ -webkit-tap-highlight-color: transparent;
444
+ /* touch-action: none; */
445
+ -webkit-touch-callout: none;
446
+ }
447
+ .flex-split-screen-drag-box-clone {
448
+ -webkit-touch-callout: none; /* iOS */
449
+ -webkit-user-select: none; /* Safari */
450
+ -khtml-user-select: none; /* Konqueror */
451
+ -moz-user-select: none; /* Firefox */
452
+ -ms-user-select: none; /* IE 10+ */
453
+ user-select: none; /* Standard syntax */
454
+ /* pointer-events: none; */
455
+ -webkit-tap-highlight-color: transparent;
456
+ /* touch-action: none; */
457
+ -webkit-touch-callout: none;
458
+
459
+ display: flex;
460
+ background-color: #adadad;
461
+ flex-direction: column;
462
+ padding: 0.2rem 0.4rem;
463
+ border-radius: 7px;
464
+ line-height: 99%;
465
+ z-index: 9001;
466
+ & span:first-child {
467
+ font-weight: bold;
468
+ font-size: 0.85rem;
469
+ }
470
+ & span:last-child {
471
+ font-size: 0.75rem;
472
+ }
473
+ }