|
10 | 10 | <style> |
11 | 11 | #source { |
12 | 12 | position: absolute; |
13 | | - top: 0; |
| 13 | + top: 50px; |
14 | 14 | left: 0; |
15 | 15 | width: 50%; |
16 | | - height: 100%; |
| 16 | + height: calc(100% - 50px); |
17 | 17 | } |
18 | 18 | #result { |
19 | 19 | position: absolute; |
20 | | - top: 0; |
| 20 | + top: 50px; |
21 | 21 | right: 0; |
22 | 22 | width: 50%; |
23 | | - height: 100%; |
| 23 | + height: calc(100% - 50px); |
| 24 | + } |
| 25 | + #source-dropdown { |
| 26 | + position: absolute; |
| 27 | + top: 10px; |
| 28 | + left: 10px; |
| 29 | + z-index: 100; |
| 30 | + } |
| 31 | + #result-dropdown { |
| 32 | + position: absolute; |
| 33 | + top: 10px; |
| 34 | + left: calc(50% + 10px); |
| 35 | + z-index: 100; |
| 36 | + } |
| 37 | + select { |
| 38 | + background: #333; |
| 39 | + color: white; |
| 40 | + border: 1px solid #555; |
| 41 | + padding: 5px 10px; |
| 42 | + } |
| 43 | + label { |
| 44 | + color: white; |
| 45 | + font-family: Arial, sans-serif; |
| 46 | + font-size: 14px; |
24 | 47 | } |
25 | 48 | </style> |
26 | 49 |
|
| 50 | + <div id="source-dropdown"> |
| 51 | + <label for="decoder-select">Encoder:</label> |
| 52 | + <select id="decoder-select"> |
| 53 | + <option value="GLSL">GLSL</option> |
| 54 | + </select> |
| 55 | + </div> |
| 56 | + <div id="result-dropdown"> |
| 57 | + <label for="encoder-select">Decoder:</label> |
| 58 | + <select id="encoder-select"> |
| 59 | + <option value="TSL">TSL</option> |
| 60 | + <option value="WGSL">WGSL</option> |
| 61 | + </select> |
| 62 | + </div> |
27 | 63 | <div id="source"></div> |
28 | 64 | <div id="result"></div> |
29 | 65 | <script src=" https://cdn.jsdelivr.net/npm/[email protected]/min/vs/loader.js" ></script> |
|
46 | 82 | import WGSLEncoder from 'three/addons/transpiler/WGSLEncoder.js'; |
47 | 83 | import TSLEncoder from 'three/addons/transpiler/TSLEncoder.js'; |
48 | 84 |
|
49 | | - import { GUI } from 'three/addons/libs/lil-gui.module.min.js'; |
50 | | - |
51 | 85 | init(); |
52 | 86 |
|
53 | 87 | function init() { |
|
124 | 158 | language: 'c', |
125 | 159 | theme: 'vs-dark', |
126 | 160 | automaticLayout: true, |
| 161 | + wordWrap: 'on', |
127 | 162 | minimap: { enabled: false } |
128 | 163 | } ); |
129 | 164 |
|
|
132 | 167 | language: 'javascript', |
133 | 168 | theme: 'vs-dark', |
134 | 169 | automaticLayout: true, |
| 170 | + wordWrap: 'on', |
135 | 171 | readOnly: true, |
136 | 172 | minimap: { enabled: false } |
137 | 173 | } ); |
|
192 | 228 |
|
193 | 229 | } ); |
194 | 230 |
|
195 | | - // gui |
196 | | - |
197 | | - const gui = new GUI(); |
| 231 | + // dropdowns |
198 | 232 |
|
199 | | - gui.add( options, 'decoder', [ 'GLSL' ] ); |
200 | | - gui.add( options, 'encoder', [ 'TSL', 'WGSL' ] ).onChange( ( encoder => { |
| 233 | + const decoderSelect = document.getElementById( 'decoder-select' ); |
| 234 | + const encoderSelect = document.getElementById( 'encoder-select' ); |
201 | 235 |
|
202 | | - const language = encoderLanguages[ encoder ]; |
| 236 | + decoderSelect.addEventListener( 'change', () => { |
| 237 | + options.decoder = decoderSelect.value; |
| 238 | + build(); |
| 239 | + } ); |
203 | 240 |
|
| 241 | + encoderSelect.addEventListener( 'change', () => { |
| 242 | + options.encoder = encoderSelect.value; |
| 243 | + |
| 244 | + const language = encoderLanguages[ encoderSelect.value ]; |
204 | 245 | window.monaco.editor.setModelLanguage( result.getModel(), language ); |
205 | 246 |
|
206 | 247 | build(); |
207 | | - |
208 | | - } ) ); |
| 248 | + } ); |
209 | 249 |
|
210 | 250 | } ); |
211 | 251 |
|
|
0 commit comments