coffeescript-ui
Version:
Coffeescript User Interface System
61 lines (46 loc) • 1.39 kB
text/coffeescript
class CUI.CodeInput extends CUI.Input
= ["javascript", "json", "css"]
readOpts: ->
super()
= true
if not CUI.CodeInput.loadAcePromise
CUI.CodeInput.loadAcePromise =
return @
initOpts: ->
super()
mode:
check: CUI.CodeInput.availableModes
default: "javascript"
render: ->
super()
CUI.CodeInput.loadAcePromise.done( =>
ace = window.ace
= ace.edit(,
mode: "ace/mode/#{@_mode}",
selectionStyle: "text",
)
value = ?[]
if value
try # Workaround to format/indent
value = JSON.parse(value)
value = JSON.stringify(value, null, '\t')
.setValue(value, -1) # -1 sets the cursor to the start
.clearSelection()
.on('change', =>
)
)
destroy: ->
?.destroy()
return super()
__fetchLibrary: ->
deferred = new CUI.Deferred()
# Load library
CUI.loadScript("https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.6/ace.js").done(->
modePromises = []
for mode in CUI.CodeInput.availableModes
modePromises.push(CUI.loadScript("https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.6/mode-#{mode}.js"))
CUI.whenAll(modePromises).done(deferred.resolve).fail(deferred.reject)
).fail(deferred.reject)
return deferred.promise()