code_sync 0.6.7
Sign up to get free protection for your applications and to get access to all the features.
- data/.rvmrc +1 -0
- data/CNAME +1 -0
- data/Gemfile +24 -0
- data/Gemfile.lock +117 -0
- data/LICENSE.md +22 -0
- data/ROADMAP.md +20 -0
- data/TODO.md +14 -0
- data/bin/codesync +11 -0
- data/code_sync.gemspec +30 -0
- data/config/routes.rb +26 -0
- data/lib/assets/javascripts/canvas.coffee +12 -0
- data/lib/assets/javascripts/canvas/editors.coffee +48 -0
- data/lib/assets/javascripts/canvas/index.coffee +15 -0
- data/lib/assets/javascripts/canvas/layer_controller.coffee +47 -0
- data/lib/assets/javascripts/code_sync.coffee +3 -0
- data/lib/assets/javascripts/code_sync/backends/gist.coffee +78 -0
- data/lib/assets/javascripts/code_sync/client/index.coffee +104 -0
- data/lib/assets/javascripts/code_sync/client/util.coffee +61 -0
- data/lib/assets/javascripts/code_sync/codemirror.coffee +12 -0
- data/lib/assets/javascripts/code_sync/config.js.coffee.erb +38 -0
- data/lib/assets/javascripts/code_sync/console/index.coffee +54 -0
- data/lib/assets/javascripts/code_sync/console/templates/console.jst.skim +10 -0
- data/lib/assets/javascripts/code_sync/dependencies.coffee +6 -0
- data/lib/assets/javascripts/code_sync/editor/advanced.coffee +0 -0
- data/lib/assets/javascripts/code_sync/editor/datasources/document.coffee +212 -0
- data/lib/assets/javascripts/code_sync/editor/datasources/gist_loader.coffee +7 -0
- data/lib/assets/javascripts/code_sync/editor/datasources/modes.coffee +117 -0
- data/lib/assets/javascripts/code_sync/editor/datasources/project_assets.coffee +14 -0
- data/lib/assets/javascripts/code_sync/editor/index.coffee +415 -0
- data/lib/assets/javascripts/code_sync/editor/plugins/asset_selector.coffee +106 -0
- data/lib/assets/javascripts/code_sync/editor/plugins/color_picker.coffee +83 -0
- data/lib/assets/javascripts/code_sync/editor/plugins/document_manager.coffee +55 -0
- data/lib/assets/javascripts/code_sync/editor/plugins/document_tabs.coffee +178 -0
- data/lib/assets/javascripts/code_sync/editor/plugins/element_sync.coffee +111 -0
- data/lib/assets/javascripts/code_sync/editor/plugins/keymap_selector.coffee +44 -0
- data/lib/assets/javascripts/code_sync/editor/plugins/mode_selector.coffee +53 -0
- data/lib/assets/javascripts/code_sync/editor/plugins/name_input.coffee +44 -0
- data/lib/assets/javascripts/code_sync/editor/plugins/preferences.coffee +71 -0
- data/lib/assets/javascripts/code_sync/editor/templates/asset_editor.jst.skim +2 -0
- data/lib/assets/javascripts/code_sync/editor/templates/asset_selector.jst.skim +5 -0
- data/lib/assets/javascripts/code_sync/editor/templates/document_manager_tab.jst.skim +15 -0
- data/lib/assets/javascripts/code_sync/editor/templates/element_sync.jst.skim +19 -0
- data/lib/assets/javascripts/code_sync/editor/templates/preferences_panel.jst.skim +38 -0
- data/lib/assets/javascripts/code_sync/editor/views/asset_selector.coffee +106 -0
- data/lib/assets/javascripts/code_sync/editor/views/color_picker.coffee +76 -0
- data/lib/assets/javascripts/code_sync/editor/views/document_manager.coffee +176 -0
- data/lib/assets/javascripts/code_sync/editor/views/keymap_selector.coffee +37 -0
- data/lib/assets/javascripts/code_sync/editor/views/mode_selector.coffee +47 -0
- data/lib/assets/javascripts/code_sync/editor/views/name_input.coffee +44 -0
- data/lib/assets/javascripts/code_sync/editor/views/preferences.coffee +71 -0
- data/lib/assets/javascripts/code_sync/index.coffee +4 -0
- data/lib/assets/javascripts/code_sync/reloader.coffee +2 -0
- data/lib/assets/javascripts/code_sync_basic.coffee +1 -0
- data/lib/assets/javascripts/demos.coffee +48 -0
- data/lib/assets/javascripts/demos/default-content.coffee +72 -0
- data/lib/assets/javascripts/demos/layout_selector.coffee +19 -0
- data/lib/assets/javascripts/demos/tour.coffee +70 -0
- data/lib/assets/javascripts/demos/tour.jst.skim +29 -0
- data/lib/assets/javascripts/marketing.coffee +0 -0
- data/lib/assets/javascripts/vendor/.DS_Store +0 -0
- data/lib/assets/javascripts/vendor/backbone-events.js +160 -0
- data/lib/assets/javascripts/vendor/backbone-min.js +4 -0
- data/lib/assets/javascripts/vendor/codemirror-coffeescript.js +346 -0
- data/lib/assets/javascripts/vendor/codemirror-css.js +570 -0
- data/lib/assets/javascripts/vendor/codemirror-haml.js +153 -0
- data/lib/assets/javascripts/vendor/codemirror-htmlmixed.js +104 -0
- data/lib/assets/javascripts/vendor/codemirror-javascript.js +468 -0
- data/lib/assets/javascripts/vendor/codemirror-markdown.js +526 -0
- data/lib/assets/javascripts/vendor/codemirror-ruby.js +194 -0
- data/lib/assets/javascripts/vendor/codemirror-sass.js +330 -0
- data/lib/assets/javascripts/vendor/codemirror-skim.js +330 -0
- data/lib/assets/javascripts/vendor/codemirror-vim.js +3159 -0
- data/lib/assets/javascripts/vendor/codemirror-xml.js +328 -0
- data/lib/assets/javascripts/vendor/console.js +339 -0
- data/lib/assets/javascripts/vendor/gisted.js +27 -0
- data/lib/assets/javascripts/vendor/jquery-ui-resize-drag.min.js +6 -0
- data/lib/assets/javascripts/vendor/jquery.js +5 -0
- data/lib/assets/javascripts/vendor/keylauncher.js +4 -0
- data/lib/assets/javascripts/vendor/keymaster.min.js +4 -0
- data/lib/assets/javascripts/vendor/spectrum.js +1868 -0
- data/lib/assets/javascripts/vendor/underscore-min.js +1 -0
- data/lib/assets/javascripts/vendor/underscore.string.min.js +1 -0
- data/lib/assets/javascripts/vendor/vendored_codemirror.js +5558 -0
- data/lib/assets/javascripts/vendor/zepto.js +2 -0
- data/lib/assets/stylesheets/canvas.css.scss +101 -0
- data/lib/assets/stylesheets/code_sync.css.scss +4 -0
- data/lib/assets/stylesheets/code_sync/codemirror.css +7 -0
- data/lib/assets/stylesheets/code_sync/console.css +86 -0
- data/lib/assets/stylesheets/code_sync/editor/asset-name-input.css.scss +12 -0
- data/lib/assets/stylesheets/code_sync/editor/asset-selector.css.scss +58 -0
- data/lib/assets/stylesheets/code_sync/editor/codesync-color-picker.css.sass +5 -0
- data/lib/assets/stylesheets/code_sync/editor/document-tabs.css.scss +61 -0
- data/lib/assets/stylesheets/code_sync/editor/element-sync.css.scss +72 -0
- data/lib/assets/stylesheets/code_sync/editor/mode-selector.css.scss +0 -0
- data/lib/assets/stylesheets/code_sync/editor/preferences-panel.css.scss +26 -0
- data/lib/assets/stylesheets/code_sync/index.css.scss +141 -0
- data/lib/assets/stylesheets/demos.css.scss +96 -0
- data/lib/assets/stylesheets/marketing.css.sass +46 -0
- data/lib/assets/stylesheets/marketing/syntax.css.scss +1 -0
- data/lib/assets/stylesheets/vendor/animate.css +1 -0
- data/lib/assets/stylesheets/vendor/codemirror-ambiance.css +75 -0
- data/lib/assets/stylesheets/vendor/codemirror-lesserdark.css +44 -0
- data/lib/assets/stylesheets/vendor/codemirror-monokai.css +28 -0
- data/lib/assets/stylesheets/vendor/codemirror-xq-light.css +43 -0
- data/lib/assets/stylesheets/vendor/grid-layout.css +1406 -0
- data/lib/assets/stylesheets/vendor/spectrum.css +481 -0
- data/lib/assets/stylesheets/vendor/vendored_codemirror.css +246 -0
- data/lib/code_sync.rb +41 -0
- data/lib/code_sync/cli.rb +73 -0
- data/lib/code_sync/manager.rb +238 -0
- data/lib/code_sync/processors.rb +18 -0
- data/lib/code_sync/processors/basic.rb +9 -0
- data/lib/code_sync/processors/jst_processor.rb +17 -0
- data/lib/code_sync/pry_console.rb +132 -0
- data/lib/code_sync/rails.rb +7 -0
- data/lib/code_sync/rails/engine.rb +12 -0
- data/lib/code_sync/server.rb +225 -0
- data/lib/code_sync/sprockets_adapter.rb +145 -0
- data/lib/code_sync/temp_asset.rb +20 -0
- data/lib/code_sync/version.rb +3 -0
- data/lib/middleman_extension.rb +43 -0
- data/readme.md +26 -0
- data/site/.gitignore +14 -0
- data/site/Gemfile +13 -0
- data/site/Gemfile.lock +183 -0
- data/site/config.rb +26 -0
- data/site/source/canvas.html.slim +21 -0
- data/site/source/codepen-style-demo.html.slim +21 -0
- data/site/source/demo.html.slim +30 -0
- data/site/source/index.html.slim +128 -0
- data/site/source/layouts/layout.slim +18 -0
- data/site/source/samples/_client.html.md +13 -0
- data/site/source/samples/_editor.html.md +19 -0
- data/site/source/samples/_hooks.html.md +8 -0
- data/site/source/samples/_middleman.html.md +7 -0
- data/site/source/samples/_rails.html.md +8 -0
- data/site/source/samples/_standalone.html.md +36 -0
- data/spec/lib/code_sync/sprockets_adapter_spec.rb +44 -0
- data/spec/spec_helper.rb +21 -0
- data/spec/support/.DS_Store +0 -0
- data/spec/support/dummy_middleman/.gitignore +14 -0
- data/spec/support/dummy_middleman/Gemfile +5 -0
- data/spec/support/dummy_middleman/Gemfile.lock +100 -0
- data/spec/support/dummy_middleman/config.rb +77 -0
- data/spec/support/dummy_middleman/source/images/background.png +0 -0
- data/spec/support/dummy_middleman/source/images/middleman.png +0 -0
- data/spec/support/dummy_middleman/source/index.html.erb +10 -0
- data/spec/support/dummy_middleman/source/javascripts/all.js +1 -0
- data/spec/support/dummy_middleman/source/layouts/layout.erb +19 -0
- data/spec/support/dummy_middleman/source/stylesheets/all.css +55 -0
- data/spec/support/dummy_middleman/source/stylesheets/normalize.css +375 -0
- data/spec/support/dummy_rails/.gitignore +15 -0
- data/spec/support/dummy_rails/Gemfile +38 -0
- data/spec/support/dummy_rails/Gemfile.lock +112 -0
- data/spec/support/dummy_rails/README.rdoc +261 -0
- data/spec/support/dummy_rails/Rakefile +7 -0
- data/spec/support/dummy_rails/app/assets/images/rails.png +0 -0
- data/spec/support/dummy_rails/app/assets/javascripts/application.js +15 -0
- data/spec/support/dummy_rails/app/assets/stylesheets/application.css +13 -0
- data/spec/support/dummy_rails/app/controllers/application_controller.rb +3 -0
- data/spec/support/dummy_rails/app/helpers/application_helper.rb +2 -0
- data/spec/support/dummy_rails/app/mailers/.gitkeep +0 -0
- data/spec/support/dummy_rails/app/models/.gitkeep +0 -0
- data/spec/support/dummy_rails/app/views/layouts/application.html.erb +14 -0
- data/spec/support/dummy_rails/config.ru +4 -0
- data/spec/support/dummy_rails/config/application.rb +62 -0
- data/spec/support/dummy_rails/config/boot.rb +6 -0
- data/spec/support/dummy_rails/config/database.yml +25 -0
- data/spec/support/dummy_rails/config/environment.rb +5 -0
- data/spec/support/dummy_rails/config/environments/development.rb +37 -0
- data/spec/support/dummy_rails/config/environments/production.rb +67 -0
- data/spec/support/dummy_rails/config/environments/test.rb +37 -0
- data/spec/support/dummy_rails/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/support/dummy_rails/config/initializers/inflections.rb +15 -0
- data/spec/support/dummy_rails/config/initializers/mime_types.rb +5 -0
- data/spec/support/dummy_rails/config/initializers/secret_token.rb +7 -0
- data/spec/support/dummy_rails/config/initializers/session_store.rb +8 -0
- data/spec/support/dummy_rails/config/initializers/wrap_parameters.rb +14 -0
- data/spec/support/dummy_rails/config/locales/en.yml +5 -0
- data/spec/support/dummy_rails/config/routes.rb +58 -0
- data/spec/support/dummy_rails/db/seeds.rb +7 -0
- data/spec/support/dummy_rails/doc/README_FOR_APP +2 -0
- data/spec/support/dummy_rails/lib/assets/.gitkeep +0 -0
- data/spec/support/dummy_rails/lib/tasks/.gitkeep +0 -0
- data/spec/support/dummy_rails/log/.gitkeep +0 -0
- data/spec/support/dummy_rails/public/404.html +26 -0
- data/spec/support/dummy_rails/public/422.html +26 -0
- data/spec/support/dummy_rails/public/500.html +25 -0
- data/spec/support/dummy_rails/public/favicon.ico +0 -0
- data/spec/support/dummy_rails/public/index.html +241 -0
- data/spec/support/dummy_rails/public/robots.txt +5 -0
- data/spec/support/dummy_rails/script/rails +6 -0
- data/spec/support/dummy_rails/test/fixtures/.gitkeep +0 -0
- data/spec/support/dummy_rails/test/functional/.gitkeep +0 -0
- data/spec/support/dummy_rails/test/integration/.gitkeep +0 -0
- data/spec/support/dummy_rails/test/performance/browsing_test.rb +12 -0
- data/spec/support/dummy_rails/test/test_helper.rb +13 -0
- data/spec/support/dummy_rails/test/unit/.gitkeep +0 -0
- data/spec/support/dummy_rails/vendor/assets/javascripts/.gitkeep +0 -0
- data/spec/support/dummy_rails/vendor/assets/stylesheets/.gitkeep +0 -0
- data/spec/support/dummy_rails/vendor/plugins/.gitkeep +0 -0
- data/spec/support/dummy_static/.DS_Store +0 -0
- data/spec/support/dummy_static/app/.DS_Store +0 -0
- data/spec/support/dummy_static/app/assets/.DS_Store +0 -0
- data/spec/support/dummy_static/app/assets/javascripts/manifest.coffee +4 -0
- data/spec/support/dummy_static/app/assets/javascripts/spec_application_javascript.coffee +4 -0
- data/spec/support/dummy_static/app/assets/stylesheets/spec_application_stylesheet.css.scss +5 -0
- data/spec/support/dummy_static/lib/assets/javascripts/spec_library_javascript.coffee +3 -0
- data/spec/support/dummy_static/lib/assets/stylesheets/spec_library_stylesheet.css.scss +5 -0
- data/spec/support/dummy_static/vendor/assets/javascripts/spec_vendor_javascript.js +5 -0
- data/spec/support/dummy_static/vendor/assets/stylesheets/spec_vendor_stylesheets.css +3 -0
- data/vendor/assets/stylesheets/code_sync.css +1 -0
- metadata +492 -0
@@ -0,0 +1,44 @@
|
|
1
|
+
CodeSync.plugins.KeymapSelector = Backbone.View.extend
|
2
|
+
className: "config-select keymap-selector"
|
3
|
+
|
4
|
+
events:
|
5
|
+
"change select" : "onSelect"
|
6
|
+
|
7
|
+
initialize: (options={})->
|
8
|
+
@editor = options.editor
|
9
|
+
|
10
|
+
@editor.on "change:keymap", (keyMap)=>
|
11
|
+
@setValue(keyMap)
|
12
|
+
|
13
|
+
Backbone.View::initialize.apply(@, arguments)
|
14
|
+
|
15
|
+
onSelect: ()->
|
16
|
+
selected = @$('select').val()
|
17
|
+
@editor.setKeyMap(selected)
|
18
|
+
|
19
|
+
setValue: (val)->
|
20
|
+
@$('select').val(val)
|
21
|
+
|
22
|
+
hideLabel: ()->
|
23
|
+
@$('label').hide()
|
24
|
+
|
25
|
+
showLabel: ()->
|
26
|
+
@$('label').show()
|
27
|
+
|
28
|
+
render: ()->
|
29
|
+
options = ""
|
30
|
+
|
31
|
+
for mode in ["default","vim"]
|
32
|
+
options += "<option value='#{ mode }'>#{ mode }</option>"
|
33
|
+
|
34
|
+
@$el.html("<label>Keymap</label> <select>#{ options }</select>")
|
35
|
+
|
36
|
+
@hideLabel() unless @visibleLabel
|
37
|
+
|
38
|
+
@
|
39
|
+
|
40
|
+
|
41
|
+
CodeSync.plugins.KeymapSelector.setup = (editor)->
|
42
|
+
v = @views.keymapSelector = new CodeSync.plugins.KeymapSelector({editor})
|
43
|
+
@$('.toolbar-wrapper').append( v.render().el )
|
44
|
+
|
@@ -0,0 +1,53 @@
|
|
1
|
+
CodeSync.plugins.ModeSelector = Backbone.View.extend
|
2
|
+
className: "config-select mode-selector"
|
3
|
+
|
4
|
+
events:
|
5
|
+
"change select" : "onSelect"
|
6
|
+
|
7
|
+
initialize: (options={})->
|
8
|
+
@editor = options.editor
|
9
|
+
|
10
|
+
@modes = @editor.modes
|
11
|
+
|
12
|
+
@modes.on "reset", @render, @
|
13
|
+
|
14
|
+
@editor.on "change:mode", (modeModel, modeId)=>
|
15
|
+
@setValue(modeId)
|
16
|
+
|
17
|
+
Backbone.View::initialize.apply(@, arguments)
|
18
|
+
|
19
|
+
onSelect: ()->
|
20
|
+
selected = @$('select').val()
|
21
|
+
mode = @modes.get(selected)
|
22
|
+
|
23
|
+
@editor.setMode(mode)
|
24
|
+
|
25
|
+
setValue: (val)->
|
26
|
+
@$('select').val(val)
|
27
|
+
|
28
|
+
hideLabel: ()->
|
29
|
+
@$('label').hide()
|
30
|
+
|
31
|
+
showLabel: ()->
|
32
|
+
@$('label').show()
|
33
|
+
|
34
|
+
render: ()->
|
35
|
+
options = ""
|
36
|
+
|
37
|
+
for mode in @modes.models
|
38
|
+
options += "<option value='#{ mode.id }'>#{ mode.get('name') }</option>"
|
39
|
+
|
40
|
+
@$el.html("<label>Language:</label> <select>#{ options }</select>")
|
41
|
+
|
42
|
+
@hideLabel() unless @visibleLabel
|
43
|
+
|
44
|
+
@
|
45
|
+
|
46
|
+
|
47
|
+
CodeSync.plugins.ModeSelector.setup = (editor)->
|
48
|
+
v = @views.modeSelector = new CodeSync.plugins.ModeSelector({editor})
|
49
|
+
@$('.toolbar-wrapper').append v.render().el
|
50
|
+
|
51
|
+
editor.on "document:loaded", (doc)-> v.setValue(doc.get('mode'))
|
52
|
+
|
53
|
+
|
@@ -0,0 +1,44 @@
|
|
1
|
+
CodeSync.NameInput = Backbone.View.extend
|
2
|
+
className: "asset-name-input"
|
3
|
+
|
4
|
+
events:
|
5
|
+
"change input" : "updateEditor"
|
6
|
+
"keyup input": "updateEditor"
|
7
|
+
"blur input": "toggle"
|
8
|
+
|
9
|
+
initialize: (options={})->
|
10
|
+
@editor = options.editor
|
11
|
+
|
12
|
+
_.bindAll(@,"_updateEditor","updateEditor","toggle")
|
13
|
+
@_updateEditor = _.debounce(CodeSync.NameInput::_updateEditor, 300)
|
14
|
+
|
15
|
+
Backbone.View::initialize.apply(@, arguments)
|
16
|
+
|
17
|
+
render: ()->
|
18
|
+
@$el.append("<input type='text' placeholder='Enter the name of the asset' />")
|
19
|
+
@$el.hide()
|
20
|
+
@
|
21
|
+
|
22
|
+
updateEditor: ()->
|
23
|
+
@_updateEditor()
|
24
|
+
|
25
|
+
_updateEditor: ()->
|
26
|
+
assetName = @$('input').val()
|
27
|
+
|
28
|
+
if assetName.match(/\./)
|
29
|
+
@editor.currentName = assetName
|
30
|
+
|
31
|
+
mode = @editor.determineModeFor(assetName)
|
32
|
+
|
33
|
+
setValue: (value)->
|
34
|
+
@$('input').val value
|
35
|
+
|
36
|
+
getValue: ()->
|
37
|
+
@$('input').val()
|
38
|
+
|
39
|
+
toggle: ()->
|
40
|
+
if @getValue()?.length is 0
|
41
|
+
@editor.setDefaultExtension()
|
42
|
+
@editor.currentName = @editor.currentPath = undefined
|
43
|
+
|
44
|
+
@$el.toggle()
|
@@ -0,0 +1,71 @@
|
|
1
|
+
CodeSync.plugins.PreferencesPanel = Backbone.View.extend
|
2
|
+
className: "preferences-panel"
|
3
|
+
|
4
|
+
events:
|
5
|
+
"change select,input" : ()->
|
6
|
+
@trigger "update:preferences"
|
7
|
+
|
8
|
+
renderHidden: true
|
9
|
+
|
10
|
+
initialize: (options)->
|
11
|
+
@editor = options.editor
|
12
|
+
|
13
|
+
@$el.html JST["code_sync/editor/templates/preferences_panel"]()
|
14
|
+
|
15
|
+
Backbone.View::initialize.apply(@, arguments)
|
16
|
+
|
17
|
+
values: ()->
|
18
|
+
values = {}
|
19
|
+
|
20
|
+
for el in @$('input,select')
|
21
|
+
input = $(el)
|
22
|
+
values[input.attr('name')] = input.val()
|
23
|
+
|
24
|
+
values
|
25
|
+
|
26
|
+
toggle: ()->
|
27
|
+
@syncWithEditorOptions()
|
28
|
+
@$el.toggle()
|
29
|
+
|
30
|
+
syncWithEditorOptions: ()->
|
31
|
+
@$('select[name="theme"]').val @editor.codeMirror.getOption('theme')
|
32
|
+
@$('select[name="keyMap"]').val @editor.codeMirror.getOption('keyMap')
|
33
|
+
@$('input[name="asset_endpoint"]').val CodeSync.get("assetCompilationEndpoint")
|
34
|
+
@$('input[name="editor_hotkey"]').val CodeSync.get("editorToggleHotKey")
|
35
|
+
|
36
|
+
render: ()->
|
37
|
+
@$el.hide() if @renderHidden is true
|
38
|
+
@
|
39
|
+
|
40
|
+
|
41
|
+
CodeSync.plugins.PreferencesPanel.setup = (editor)->
|
42
|
+
panel = new CodeSync.plugins.PreferencesPanel(editor: @)
|
43
|
+
|
44
|
+
@$('.toolbar-wrapper').append "<div class='button toggle-preferences'>Preferences</div>"
|
45
|
+
|
46
|
+
@events["click .toggle-preferences"] = ()=> panel.toggle()
|
47
|
+
|
48
|
+
@$el.append panel.render().el
|
49
|
+
|
50
|
+
panel.on "update:preferences", ()=>
|
51
|
+
values = panel.values()
|
52
|
+
|
53
|
+
editor.setTheme(values.theme)
|
54
|
+
editor.setKeyMap(values.keyMap)
|
55
|
+
|
56
|
+
CodeSync.set("assetCompilationEndpoint", values.asset_endpoint)
|
57
|
+
|
58
|
+
CodeSync.AssetEditor.setHotKey(values.editor_hotkey)
|
59
|
+
|
60
|
+
editor.on "codemirror:setup", (cm)->
|
61
|
+
cm.on "focus", ()->
|
62
|
+
panel.$el.hide()
|
63
|
+
|
64
|
+
panel.on "update:preferences", ()=>
|
65
|
+
values = panel.values()
|
66
|
+
if editor.position isnt values.position
|
67
|
+
editor.setPosition(values.position)
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
- displayValue = @display || @doc.get("display") || @doc.get("name")
|
2
|
+
|
3
|
+
- classes = ["document-tab"]
|
4
|
+
- classes.push @cls if @cls?
|
5
|
+
- classes.push("selectable") if @doc?
|
6
|
+
- classes.push("closable") if @closable and !@doc?.isSticky()
|
7
|
+
- classes.push("hideable") unless @index is 0
|
8
|
+
- classes.push("editable") if @doc? && !@doc?.isSticky()
|
9
|
+
|
10
|
+
div class="#{ classes.join(' ') }" data-document-cid="#{ @doc?.cid }"
|
11
|
+
span.contents
|
12
|
+
= displayValue
|
13
|
+
|
14
|
+
small.close-anchor x
|
15
|
+
|
@@ -0,0 +1,19 @@
|
|
1
|
+
.element-sync-panel
|
2
|
+
.row
|
3
|
+
.span9
|
4
|
+
input name="css-selector" placeholder="Enter a CSS selector to sync with"
|
5
|
+
.span3
|
6
|
+
select name="action"
|
7
|
+
option value="html" Replace
|
8
|
+
option value="before" Before
|
9
|
+
option value="before" After
|
10
|
+
.row
|
11
|
+
.span9
|
12
|
+
.element-sync-status
|
13
|
+
input.done-button type="button" value="Done"
|
14
|
+
input.hide-panel-button type="button" value="Hide"
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
|
@@ -0,0 +1,38 @@
|
|
1
|
+
form
|
2
|
+
.control-group
|
3
|
+
label
|
4
|
+
| KeyBindings
|
5
|
+
.controls
|
6
|
+
select name="keyMap"
|
7
|
+
option value="default" Default
|
8
|
+
option value="vim" Vim
|
9
|
+
|
10
|
+
.control-group
|
11
|
+
label
|
12
|
+
| Theme
|
13
|
+
.controls
|
14
|
+
select name="theme"
|
15
|
+
option value="ambiance" Ambiance
|
16
|
+
option value="lesser-dark" Lesser Dark
|
17
|
+
option value="monokai" Monokai
|
18
|
+
option value="xq-light" XQ Light
|
19
|
+
|
20
|
+
.control-group
|
21
|
+
label
|
22
|
+
| Asset Compiler Endpoint
|
23
|
+
.controls
|
24
|
+
input type="text" name="asset_endpoint" value="#{ CodeSync.get('assetCompilationEndpoint') }"
|
25
|
+
|
26
|
+
.control-group
|
27
|
+
label
|
28
|
+
| Hotkey
|
29
|
+
.controls
|
30
|
+
input type="text" name="editor_hotkey" value="#{ CodeSync.get('editorToggleHotkey') }"
|
31
|
+
|
32
|
+
.control-group
|
33
|
+
label
|
34
|
+
| Position
|
35
|
+
.controls
|
36
|
+
select name="position"
|
37
|
+
option value="top" Top
|
38
|
+
option value="bottom" Bottom
|
@@ -0,0 +1,106 @@
|
|
1
|
+
CodeSync.AssetSelector = Backbone.View.extend
|
2
|
+
className: "codesync-asset-selector"
|
3
|
+
|
4
|
+
events:
|
5
|
+
"keyup input": "keyHandler"
|
6
|
+
"click .search-result": "selectSearchResult"
|
7
|
+
|
8
|
+
initialize:(options={})->
|
9
|
+
Backbone.View::initialize.apply(@, arguments)
|
10
|
+
|
11
|
+
@editor = options.editor
|
12
|
+
|
13
|
+
_.bindAll(@,"keyHandler","loadAsset")
|
14
|
+
|
15
|
+
@selected = new Backbone.Model(index: -1)
|
16
|
+
|
17
|
+
@selected.on "change:index", (model,value)=>
|
18
|
+
@$('.search-result').removeClass('active')
|
19
|
+
@$('.search-result').eq(value).addClass('active')
|
20
|
+
|
21
|
+
keyHandler: (e)->
|
22
|
+
switch e.keyCode
|
23
|
+
when 13
|
24
|
+
@openCurrentSearchResult()
|
25
|
+
when 27
|
26
|
+
@hide()
|
27
|
+
when 38
|
28
|
+
@previousSearchResult()
|
29
|
+
when 40
|
30
|
+
@nextSearchResult()
|
31
|
+
else
|
32
|
+
@filterAssetsBy @$('input').val()
|
33
|
+
|
34
|
+
openCurrentSearchResult: ()->
|
35
|
+
{index} = @selected.attributes
|
36
|
+
|
37
|
+
if asset = @searchResults[index]
|
38
|
+
@selected.set('index',0,silent:true)
|
39
|
+
|
40
|
+
_.delay ()=>
|
41
|
+
@loadAsset @searchResults[index].get('path')
|
42
|
+
, 10
|
43
|
+
@hide()
|
44
|
+
|
45
|
+
previousSearchResult: ()->
|
46
|
+
{index} = @selected.attributes
|
47
|
+
index -= 1
|
48
|
+
index = 0 if index < 0
|
49
|
+
@selected.set {index}
|
50
|
+
|
51
|
+
nextSearchResult: ()->
|
52
|
+
{index} = @selected.attributes
|
53
|
+
index += 1
|
54
|
+
index = 0 if index > @searchResults.length
|
55
|
+
@selected.set {index}
|
56
|
+
|
57
|
+
selectSearchResult: (e)->
|
58
|
+
@loadAsset $(e.target)?.data('path')
|
59
|
+
|
60
|
+
loadAsset: (path)->
|
61
|
+
@trigger "asset:selected", path
|
62
|
+
|
63
|
+
filterAssetsBy: (value)->
|
64
|
+
return if value.length <= 1
|
65
|
+
|
66
|
+
wrapper = @showSearchResults()
|
67
|
+
wrapper.empty()
|
68
|
+
|
69
|
+
@selected.set('index',-1, silent: true)
|
70
|
+
|
71
|
+
@searchResults = @collection.select (model)->
|
72
|
+
regex = new RegExp("#{value}")
|
73
|
+
model.get("description")?.match(regex) || model.get("path")?.match(regex)
|
74
|
+
|
75
|
+
@searchResults = @searchResults.slice(0,5)
|
76
|
+
|
77
|
+
for model,index in @searchResults
|
78
|
+
wrapper.append "<div data-path='#{ model.get('path') }' class='search-result'>#{ model.get('description') }</div>"
|
79
|
+
|
80
|
+
wrapper.height( @searchResults.length * 40 )
|
81
|
+
|
82
|
+
showSearchResults: ()->
|
83
|
+
@wrapper.show()
|
84
|
+
|
85
|
+
hideSearchResults: ()->
|
86
|
+
@wrapper.hide()
|
87
|
+
|
88
|
+
toggle: ()->
|
89
|
+
if @visible then @hide() else @show()
|
90
|
+
|
91
|
+
show: ()->
|
92
|
+
@wrapper.empty()
|
93
|
+
@visible = true
|
94
|
+
@$el.show()
|
95
|
+
@hideSearchResults()
|
96
|
+
@$('input').val('').focus()
|
97
|
+
|
98
|
+
hide: ()->
|
99
|
+
@$el.hide()
|
100
|
+
@visible = false
|
101
|
+
@editor.codeMirror.focus()
|
102
|
+
|
103
|
+
render: ()->
|
104
|
+
@$el.html JST["code_sync/editor/templates/asset_selector"]()
|
105
|
+
@wrapper ||= @$('.search-results-wrapper')
|
106
|
+
@
|
@@ -0,0 +1,76 @@
|
|
1
|
+
CodeSync.plugins.ColorPicker = Backbone.View.extend
|
2
|
+
className: "codesync-color-picker"
|
3
|
+
|
4
|
+
spectrumOptions:
|
5
|
+
showAlpha: false
|
6
|
+
preferredFormat: "hex6"
|
7
|
+
flat: true
|
8
|
+
showInput: true
|
9
|
+
chooseText: "Choose"
|
10
|
+
|
11
|
+
initialize: (@options={})->
|
12
|
+
_.extend(@,@options)
|
13
|
+
|
14
|
+
@$el.append "<input type='color' class='color-picker-widget' />"
|
15
|
+
|
16
|
+
@widget = @$('.color-picker-widget')
|
17
|
+
|
18
|
+
remove: ()->
|
19
|
+
@widget.spectrum("destroy")
|
20
|
+
@$el.remove()
|
21
|
+
|
22
|
+
hide: ()->
|
23
|
+
@widget.spectrum("hide")
|
24
|
+
@$el.hide()
|
25
|
+
|
26
|
+
@off "color:change"
|
27
|
+
|
28
|
+
show: ()->
|
29
|
+
@widget.spectrum("show")
|
30
|
+
@$el.show()
|
31
|
+
|
32
|
+
syncWithToken: (token, cursor)->
|
33
|
+
|
34
|
+
cm = @editor.codeMirror
|
35
|
+
|
36
|
+
cm.addWidget(cursor, @el)
|
37
|
+
|
38
|
+
@show()
|
39
|
+
|
40
|
+
line = cm.getLine(cursor.line)
|
41
|
+
|
42
|
+
startch = token.start
|
43
|
+
endch = token.end
|
44
|
+
|
45
|
+
@widget.spectrum("set",token.string)
|
46
|
+
|
47
|
+
@on "color:change", _.debounce (colorObject, hexValue)=>
|
48
|
+
cm.replaceRange("#"+hexValue, {line:cursor.line,ch:startch}, {line:cursor.line,ch:endch})
|
49
|
+
@editor.currentDocument?.trigger("change:contents")
|
50
|
+
|
51
|
+
render: ()->
|
52
|
+
opts = _.extend @spectrumOptions,
|
53
|
+
move: _.debounce((color)=>
|
54
|
+
@trigger "color:change", color, color.toHex()
|
55
|
+
,200)
|
56
|
+
|
57
|
+
@widget.spectrum(@spectrumOptions)
|
58
|
+
|
59
|
+
@
|
60
|
+
|
61
|
+
CodeSync.plugins.ColorPicker.setup = (editor)->
|
62
|
+
@colorPicker = new CodeSync.plugins.ColorPicker(editor: editor)
|
63
|
+
|
64
|
+
@$el.append( editor.colorPicker.render().el )
|
65
|
+
@colorPicker.hide()
|
66
|
+
|
67
|
+
cm = editor.codeMirror
|
68
|
+
|
69
|
+
cm.on "cursorActivity", ->
|
70
|
+
cursor = cm.getCursor()
|
71
|
+
token = cm.getTokenAt(cursor)
|
72
|
+
|
73
|
+
if token.string?.match(/#[a-fA-F0-9]{3,6}/g) and token.string?.length >= 6
|
74
|
+
editor.colorPicker.syncWithToken(token, cursor)
|
75
|
+
else
|
76
|
+
editor.colorPicker.hide()
|