1+ < html >
2+
3+ < head >
4+ < title > MakeCode Multi Editor</ title >
5+ < style >
6+ html , body {
7+ overscroll-behavior : none;
8+ }
9+ iframe {
10+ position : absolute;
11+ width : calc (50% - 0.15rem );
12+ height : 100% ;
13+ bottom : 0 ;
14+ top : 0 ;
15+ border : none;
16+ }
17+
18+ # left {
19+ left : 0 ;
20+ right : calc (50% - 0.15rem );
21+ }
22+
23+ # right {
24+ right : 0 ;
25+ left : calc (50% + 0.15rem );
26+ }
27+
28+ # divider {
29+ position : absolute;
30+ width : 0.3rem ;
31+ cursor : col-resize;
32+ height : 100% ;
33+ left : calc (50% - 0.15rem );
34+ right : calc (50% + 0.15rem );
35+ background : # bbb ;
36+ top : 0rem ;
37+ }
38+ </ style >
39+ </ head >
40+
41+ < body >
42+ < iframe id ="left " allow ="usb "> </ iframe >
43+ < div id ="divider "> </ div >
44+ < iframe id ="right " allow ="usb "> </ iframe >
45+ < script >
46+ ( function ( ) {
47+ // This line gets patched up by the cloud
48+ var pxtConfig = null ;
49+
50+ var left = document . getElementById ( "left" ) ;
51+ var right = document . getElementById ( "right" ) ;
52+ var divider = document . getElementById ( "divider" ) ;
53+ var localhost = window . location . hostname == "localhost" ;
54+ var editor = ( pxtConfig ? pxtConfig . relprefix : '/' ) . replace ( / - * $ / , '' ) ;
55+ var flags = "?nestededitorsim=1&editorlayout=ide&nosandbox=1" ;
56+ var ratio = .5 ;
57+ var dividerWidth = 14 ;
58+
59+ window . onmessage = function ( msg ) {
60+ var data = msg . data ;
61+ var source = msg . source ;
62+ if ( ! ! data . broadcast ) {
63+ data . outer = true ;
64+ [ left , right ]
65+ . filter ( function ( ifrm ) {
66+ return ifrm . contentWindow !== source ;
67+ } )
68+ . forEach ( function ( ifrm ) {
69+ ifrm . contentWindow . postMessage ( data , window . location . origin )
70+ } ) ;
71+ }
72+ } ;
73+
74+ function updateSrc ( ifrm ) {
75+ if ( localhost ) {
76+ ifrm . src = "/index.html" + flags ;
77+ } else {
78+ ifrm . src = editor + flags ;
79+ }
80+ }
81+ updateSrc ( left ) ;
82+ updateSrc ( right ) ;
83+
84+ function setWidths ( ) {
85+ var t = document . body . clientWidth ;
86+ var n = Math . floor ( t * ratio ) ;
87+ var i = Math . max ( t - n - dividerWidth , 4 ) ;
88+ left . style . width = n + "px" ;
89+ divider . style . left = n + "px" ;
90+ divider . style . width = dividerWidth + "px" ;
91+ right . style . left = n + dividerWidth + "px" ;
92+ right . style . width = i + "px" ;
93+ }
94+ function startDrag ( ) {
95+ left . style . visibility = "hidden" ;
96+ right . style . visibility = "hidden" ;
97+ var n = divider . onmouseover ;
98+ var t = divider . onmouseout ;
99+ divider . onmouseover = null ;
100+ divider . onmouseout = null ;
101+ document . body . onmousemove = function ( n ) {
102+ n || ( n = window . event ) ;
103+ ratio = ( n . clientX - dividerWidth / 2 ) / document . body . clientWidth ;
104+ ratio < .1 && ( ratio = .1 ) ;
105+ ratio > .9 && ( ratio = .9 ) ;
106+ setWidths ( ) ;
107+ }
108+ document . body . onmouseup = function ( ) {
109+ document . body . onmousemove = null ;
110+ document . body . onmouseup = null ;
111+ left . style . visibility = "inherit" ;
112+ right . style . visibility = "inherit" ;
113+ divider . onmouseover = n ;
114+ divider . onmouseout = t ;
115+ }
116+ }
117+ window . onresize = setWidths ;
118+ setWidths ( ) ;
119+ divider . onmouseover = function ( ) {
120+ document . body . style . cursor = "w-resize" ;
121+ divider . onmousedown = startDrag ;
122+ }
123+ divider . onmouseout = function ( ) {
124+ document . body . style . cursor = "default" ;
125+ divider . onmousedown = null ;
126+ }
127+ } ) ( ) ;
128+ </ script >
129+ <!-- @include tracking.html -->
130+ </ body >
131+
132+ </ html >
0 commit comments