@@ -26,10 +26,12 @@ object FiddleEditor {
26
26
27
27
case class EditorBinding (name : String , keys : String , action : () => Any )
28
28
29
- case class Props (data : ModelProxy [FiddleData ],
30
- fiddleId : Option [FiddleId ],
31
- outputData : ModelR [AppModel , OutputData ],
32
- loginData : ModelR [AppModel , LoginData ]) {
29
+ case class Props (
30
+ data : ModelProxy [FiddleData ],
31
+ fiddleId : Option [FiddleId ],
32
+ outputData : ModelR [AppModel , OutputData ],
33
+ loginData : ModelR [AppModel , LoginData ]
34
+ ) {
33
35
def dispatch (a : Action ) = data.dispatchCB(a)
34
36
}
35
37
@@ -96,15 +98,19 @@ object FiddleEditor {
96
98
),
97
99
div(cls := " ui basic button" , onClick --> props.dispatch(SaveFiddle (reconstructSource(state))))(
98
100
Icon .pencil,
99
- " Save" ).when(showSave),
101
+ " Save"
102
+ ).when(showSave),
100
103
div(cls := " ui basic button" , onClick --> props.dispatch(UpdateFiddle (reconstructSource(state))))(
101
104
Icon .pencil,
102
- " Update" ).when(showUpdate),
105
+ " Update"
106
+ ).when(showUpdate),
103
107
div(cls := " ui basic button" , onClick --> props.dispatch(ForkFiddle (reconstructSource(state))))(
104
108
Icon .codeFork,
105
- " Fork" ).when(fiddleHasId),
109
+ " Fork"
110
+ ).when(fiddleHasId),
106
111
Dropdown (" top basic button embed-options" , span(" Embed" , Icon .caretDown))(_ =>
107
- div(cls := " menu" , display.block)(EmbedEditor (props.fiddleId.get))).when(fiddleHasId)
112
+ div(cls := " menu" , display.block)(EmbedEditor (props.fiddleId.get))
113
+ ).when(fiddleHasId)
108
114
),
109
115
div(cls := " right" )(
110
116
div(cls := " ui basic button" , onClick --> props.dispatch(ShowHelp (ScalaFiddleConfig .helpURL)))(
@@ -128,7 +134,8 @@ object FiddleEditor {
128
134
label(" Show template" )
129
135
)
130
136
)
131
- ))
137
+ )
138
+ )
132
139
),
133
140
div.ref(editorRef = _)(id := " editor" )
134
141
),
@@ -143,7 +150,7 @@ object FiddleEditor {
143
150
width := " 100%" ,
144
151
height := " 100%" ,
145
152
frameBorder := " 0" ,
146
- sandbox := " allow-scripts allow-popups allow-popups-to-escape-sandbox" ,
153
+ sandbox := " allow-scripts allow-popups allow-popups-to-escape-sandbox allow-forms " ,
147
154
src := s " /resultframe?theme=light "
148
155
)
149
156
)
@@ -195,7 +202,7 @@ object FiddleEditor {
195
202
width := " 0%" ,
196
203
height := " 0%" ,
197
204
frameBorder := " 0" ,
198
- sandbox := " allow-scripts allow-popups allow-popups-to-escape-sandbox" ,
205
+ sandbox := " allow-scripts allow-popups allow-popups-to-escape-sandbox allow-forms " ,
199
206
src := s " /resultframe?theme=light "
200
207
)
201
208
)
@@ -345,26 +352,30 @@ object FiddleEditor {
345
352
editor.updateDynamic(" $blockScrolling" )(Double .PositiveInfinity )
346
353
347
354
val globalBindings = Seq (
348
- EditorBinding (" Compile" ,
349
- " enter" ,
350
- () =>
351
- beginCompilation().foreach(_ => {
352
- buildFullSource
353
- .flatMap { source =>
354
- props.dispatch(compile(source, FastOpt ))
355
- }
356
- .runNow()
357
- })),
358
- EditorBinding (" FullOptimize" ,
359
- " shift+enter" ,
360
- () =>
361
- beginCompilation().foreach(_ => {
362
- buildFullSource
363
- .flatMap { source =>
364
- props.dispatch(compile(source, FullOpt ))
365
- }
366
- .runNow()
367
- })),
355
+ EditorBinding (
356
+ " Compile" ,
357
+ " enter" ,
358
+ () =>
359
+ beginCompilation().foreach(_ => {
360
+ buildFullSource
361
+ .flatMap { source =>
362
+ props.dispatch(compile(source, FastOpt ))
363
+ }
364
+ .runNow()
365
+ })
366
+ ),
367
+ EditorBinding (
368
+ " FullOptimize" ,
369
+ " shift+enter" ,
370
+ () =>
371
+ beginCompilation().foreach(_ => {
372
+ buildFullSource
373
+ .flatMap { source =>
374
+ props.dispatch(compile(source, FullOpt ))
375
+ }
376
+ .runNow()
377
+ })
378
+ ),
368
379
EditorBinding (" Show JavaScript" , " j" , () => $.state.map(state => showJSCode(state)).runNow()),
369
380
EditorBinding (
370
381
" Save" ,
@@ -407,7 +418,8 @@ object FiddleEditor {
407
418
" sender" -> " editor|cli"
408
419
),
409
420
" exec" -> func
410
- ))
421
+ )
422
+ )
411
423
}
412
424
413
425
// register auto complete
@@ -439,7 +451,8 @@ object FiddleEditor {
439
451
}
440
452
}
441
453
)
442
- .value)
454
+ .value
455
+ )
443
456
444
457
// focus to the editor
445
458
editor.focus()
@@ -460,8 +473,9 @@ object FiddleEditor {
460
473
props.dispatch(UpdateLoginInfo ) >>
461
474
updateFiddle(props.data()) >>
462
475
Callback .when(props.fiddleId.isDefined)(
463
- props.dispatch(
464
- compile(addDeps(props.data().sourceCode, props.data().libraries, props.data().scalaVersion), FastOpt )))
476
+ props
477
+ .dispatch(compile(addDeps(props.data().sourceCode, props.data().libraries, props.data().scalaVersion), FastOpt ))
478
+ )
465
479
}
466
480
467
481
val fiddleStart = """ \s*// \$FiddleStart\s*$""" .r
@@ -497,7 +511,8 @@ object FiddleEditor {
497
511
val indent = main.filter(_.nonEmpty).map(_.takeWhile(_ == ' ' ).length).min
498
512
editor.getSession().setValue(main.map(_.drop(indent)).mkString(" \n " ))
499
513
$.setState(
500
- state.copy(preCode = pre, mainCode = main, postCode = post, indent = indent, lastModified = fiddle.modified))
514
+ state.copy(preCode = pre, mainCode = main, postCode = post, indent = indent, lastModified = fiddle.modified)
515
+ )
501
516
}
502
517
}
503
518
}
@@ -590,9 +605,11 @@ object FiddleEditor {
590
605
// start running the code after a short delay, to allow DOM to update in case the code is slow to complete
591
606
js.timers.setTimeout(30 ) {
592
607
// pass compiled data to the iframe
593
- val data = js.Dynamic .literal(code = jsCode,
594
- jsDeps = compilerData.jsDeps.toJSArray,
595
- cssDeps = compilerData.cssDeps.toJSArray)
608
+ val data = js.Dynamic .literal(
609
+ code = jsCode,
610
+ jsDeps = compilerData.jsDeps.toJSArray,
611
+ cssDeps = compilerData.cssDeps.toJSArray
612
+ )
596
613
sendFrameCmd(" code" , data)
597
614
}
598
615
}
@@ -617,9 +634,11 @@ object FiddleEditor {
617
634
.componentWillReceiveProps(scope => scope.backend.updateProps(scope.nextProps, scope.state))
618
635
.build
619
636
620
- def apply (data : ModelProxy [FiddleData ],
621
- fiddleId : Option [FiddleId ],
622
- compilerData : ModelR [AppModel , OutputData ],
623
- loginData : ModelR [AppModel , LoginData ]) =
637
+ def apply (
638
+ data : ModelProxy [FiddleData ],
639
+ fiddleId : Option [FiddleId ],
640
+ compilerData : ModelR [AppModel , OutputData ],
641
+ loginData : ModelR [AppModel , LoginData ]
642
+ ) =
624
643
component(Props (data, fiddleId, compilerData, loginData))
625
644
}
0 commit comments