// +build js
package main
import (
"github.com/gopherjs/gopherjs/js"
"github.com/mame82/hvue"
)
type CompHIDScriptCodeEditorData struct {
*js.Object
CodeMirrorOptions *CodeMirrorOptionsType `js:"codemirrorOptions"`
}
type CodeMirrorMode struct {
*js.Object
Name string `js:"name"`
GlobalVars bool `js:"globalVars"`
}
type CodeMirrorExtraKeys struct {
*js.Object
CtrlSpace string `js:"Ctrl-Space"`
}
type CodeMirrorOptionsType struct {
*js.Object
Mode *CodeMirrorMode `js:"mode"`
LineNumbers bool `js:"lineNumbers"`
LineWrapping bool `js:"lineWrapping"`
AutoCloseBrackets bool `js:"autoCloseBrackets"`
ExtraKeys *CodeMirrorExtraKeys `js:"extraKeys"`
}
func newCompHIDScriptCodeEditorData(vm *hvue.VM) interface{} {
data := &CompHIDScriptCodeEditorData{ Object: O() }
data.CodeMirrorOptions = &CodeMirrorOptionsType{Object: O()}
data.CodeMirrorOptions.Mode = &CodeMirrorMode{ Object: O() }
data.CodeMirrorOptions.Mode.Name = "text/javascript"
data.CodeMirrorOptions.Mode.GlobalVars = true //expose globalVars of mode for auto-complete with addon/hint/show-hint.js, addon/hint/javascript-hint.js"
data.CodeMirrorOptions.ExtraKeys = &CodeMirrorExtraKeys{ Object: O() }
data.CodeMirrorOptions.ExtraKeys.CtrlSpace = "autocomplete"
data.CodeMirrorOptions.LineNumbers = true
//data.CodeMirrorOptions.LineWrapping = true
data.CodeMirrorOptions.AutoCloseBrackets = true
return data
}
func InitComponentsHIDScript() {
hvue.NewComponent(
"hid-script-code-editor",
hvue.Template(compHIDScriptCodeEditorTemplate),
hvue.DataFunc(newCompHIDScriptCodeEditorData),
hvue.ComputedWithGetSet(
"scriptContent",
func(vm *hvue.VM) interface{} {
return vm.Get("$store").Get("state").Get("currentHIDScriptSource")
},
func(vm *hvue.VM, newScriptContent *js.Object) {
vm.Get("$store").Call("commit", VUEX_MUTATION_SET_CURRENT_HID_SCRIPT_SOURCE_TO, newScriptContent)
}),
)
hvue.NewComponent(
"hid-script",
hvue.Template(compHIDScriptTemplate),
hvue.DataFunc(func(vm *hvue.VM) interface{} {
data := struct {
*js.Object
ShowLoadHIDScriptModal bool `js:"ShowLoadHIDScriptModal"`
ShowLoadHIDScriptPrependModal bool `js:"ShowLoadHIDScriptPrependModal"`
ShowStoreHIDScriptModal bool `js:"ShowStoreHIDScriptModal"`
ShowRansom bool `js:"ShowRansom"`
}{Object: O()}
data.ShowLoadHIDScriptModal = false
data.ShowLoadHIDScriptPrependModal = false
data.ShowStoreHIDScriptModal = false
data.ShowRansom = false
return &data
}),
hvue.Method("updateStoredHIDScriptsList",
func(vm *hvue.VM) {
vm.Store.Call("dispatch", VUEX_ACTION_UPDATE_STORED_HID_SCRIPTS_LIST)
}),
hvue.Method("loadHIDScript",
func(vm *hvue.VM, name string) {
vm.Get("$q").Call("notify", "load " + name)
updateReq := &jsLoadHidScriptSourceReq{Object:O()}
updateReq.FileName = name
updateReq.Mode = HID_SCRIPT_SOURCE_LOAD_MODE_REPLACE
vm.Store.Call("dispatch", VUEX_ACTION_UPDATE_CURRENT_HID_SCRIPT_SOURCE_FROM_REMOTE_FILE, updateReq)
}),
hvue.Method("loadHIDScriptPrepend",
func(vm *hvue.VM, name string) {
vm.Get("$q").Call("notify", "load prepend " + name)
updateReq := &jsLoadHidScriptSourceReq{Object:O()}
updateReq.FileName = name
updateReq.Mode = HID_SCRIPT_SOURCE_LOAD_MODE_PREPEND
vm.Store.Call("dispatch", VUEX_ACTION_UPDATE_CURRENT_HID_SCRIPT_SOURCE_FROM_REMOTE_FILE, updateReq)
}),
hvue.Method("storeHIDScript",
func(vm *hvue.VM, name *js.Object) {
vm.Get("$q").Call("notify", "store " + name.String())
vm.Store.Call("dispatch", VUEX_ACTION_STORE_CURRENT_HID_SCRIPT_SOURCE_TO_REMOTE_FILE, name)
}),
hvue.Method("SendAndRun", func (vm *hvue.VM) {
sourceCode := vm.Get("$store").Get("state").Get("currentHIDScriptSource").String()
vm.Store.Call("dispatch", VUEX_ACTION_AND_AND_RUN_HID_SCRIPT, sourceCode)
}),
)
}
const (
compHIDScriptTemplate = `
`
compHIDScriptCodeEditorTemplate = `
`
)