11<template >
22 <component
3- :is =" isRow && isExpanded ? 'splitpanes ' : 'div'"
3+ :is =" isRow && isExpanded ? 'multipane ' : 'div'"
44 :class =" {
55 'default-theme': isRow,
66 'vue-run-sfc-main-reverse': isExpanded && !isRow && reverse
99 class =" vue-run-sfc-main"
1010 >
1111 <template v-if =" isRow && isExpanded " >
12- <pane style =" overflow-y : auto " >
12+ <div class = " vue-run-sfc-main- pane" style =" overflow-y : auto ; width : 50 % ; " >
1313 <slot name =" editor" ></slot >
14- </pane >
15- <pane style =" overflow-y : auto " >
14+ </div >
15+ <multipane-resizer ></multipane-resizer >
16+ <div class =" vue-run-sfc-main-pane" style =" overflow-y : auto ;flexGrow : 1 " >
1617 <slot name =" preview" ></slot >
17- </pane >
18+ </div >
1819 </template >
1920 <template v-else >
2021 <slot v-if =" isExpanded" name =" editor" ></slot >
2425</template >
2526
2627<script >
27- import { Splitpanes , Pane } from ' splitpanes'
28- import ' splitpanes/dist/splitpanes.css'
28+ import { Multipane , MultipaneResizer } from ' vue-multipane'
2929
3030export default {
3131 name: ' vue-run-sfc-main' ,
3232 components: {
33- Splitpanes ,
34- Pane
33+ Multipane ,
34+ MultipaneResizer
3535 },
3636 props: {
3737 isRow: Boolean ,
@@ -49,7 +49,7 @@ export default {
4949 z-index : 1 ;
5050 box-sizing : border-box ;
5151 overflow-y : auto ;
52- border : 1px solid var ( --vue-run-sfc-border , #ebeef5 ) ;
52+ border : 1px solid #ebeef5 ;
5353 border-top : none ;
5454}
5555
@@ -62,13 +62,36 @@ export default {
6262.vue-run-sfc-main-reverse .vue-run-sfc-editor {
6363 border-top : 1px solid #eaeefb ;
6464}
65- /* 拖拽看板样式 */
66- .splitpanes.default-theme .splitpanes__pane {
67- background : white ;
65+
66+ .vue-run-sfc-main-pane {
67+ text-align : left ;
68+ overflow : hidden ;
69+ }
70+ .vue-run-sfc-main > .multipane-resizer {
71+ margin : 0 ;
72+ left : 0 ;
73+ position : relative ;
74+ border-left : 1px solid #ebeef5 ;
75+ border-right : 1px solid #ebeef5 ;
76+ }
77+ .vue-run-sfc-main > .multipane-resizer :before {
78+ display : block ;
79+ content : ' ' ;
80+ width : 3px ;
81+ height : 40px ;
82+ position : absolute ;
83+ top : 50% ;
84+ left : 50% ;
85+ margin-top : -20px ;
86+ margin-left : -2.5px ;
87+ border-left : 1px solid #ccc ;
88+ border-right : 1px solid #ccc ;
89+ }
90+ .vue-run-sfc-main > .multipane-resizer :hover :before {
91+ border-color : #999 ;
6892}
6993
70- .vue-run-sfc-main.splitpanes--vertical > .splitpanes__splitter {
71- border-left : 1px solid var (--vue-run-sfc-border , #ebeef5 );
72- border-right : 1px solid var (--vue-run-sfc-border , #ebeef5 );
94+ .vue-run-sfc-main.layout-v > .multipane-resizer {
95+ height : auto ;
7396}
7497 </style >
0 commit comments