code_sync 0.6.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (213) hide show
  1. data/.rvmrc +1 -0
  2. data/CNAME +1 -0
  3. data/Gemfile +24 -0
  4. data/Gemfile.lock +117 -0
  5. data/LICENSE.md +22 -0
  6. data/ROADMAP.md +20 -0
  7. data/TODO.md +14 -0
  8. data/bin/codesync +11 -0
  9. data/code_sync.gemspec +30 -0
  10. data/config/routes.rb +26 -0
  11. data/lib/assets/javascripts/canvas.coffee +12 -0
  12. data/lib/assets/javascripts/canvas/editors.coffee +48 -0
  13. data/lib/assets/javascripts/canvas/index.coffee +15 -0
  14. data/lib/assets/javascripts/canvas/layer_controller.coffee +47 -0
  15. data/lib/assets/javascripts/code_sync.coffee +3 -0
  16. data/lib/assets/javascripts/code_sync/backends/gist.coffee +78 -0
  17. data/lib/assets/javascripts/code_sync/client/index.coffee +104 -0
  18. data/lib/assets/javascripts/code_sync/client/util.coffee +61 -0
  19. data/lib/assets/javascripts/code_sync/codemirror.coffee +12 -0
  20. data/lib/assets/javascripts/code_sync/config.js.coffee.erb +38 -0
  21. data/lib/assets/javascripts/code_sync/console/index.coffee +54 -0
  22. data/lib/assets/javascripts/code_sync/console/templates/console.jst.skim +10 -0
  23. data/lib/assets/javascripts/code_sync/dependencies.coffee +6 -0
  24. data/lib/assets/javascripts/code_sync/editor/advanced.coffee +0 -0
  25. data/lib/assets/javascripts/code_sync/editor/datasources/document.coffee +212 -0
  26. data/lib/assets/javascripts/code_sync/editor/datasources/gist_loader.coffee +7 -0
  27. data/lib/assets/javascripts/code_sync/editor/datasources/modes.coffee +117 -0
  28. data/lib/assets/javascripts/code_sync/editor/datasources/project_assets.coffee +14 -0
  29. data/lib/assets/javascripts/code_sync/editor/index.coffee +415 -0
  30. data/lib/assets/javascripts/code_sync/editor/plugins/asset_selector.coffee +106 -0
  31. data/lib/assets/javascripts/code_sync/editor/plugins/color_picker.coffee +83 -0
  32. data/lib/assets/javascripts/code_sync/editor/plugins/document_manager.coffee +55 -0
  33. data/lib/assets/javascripts/code_sync/editor/plugins/document_tabs.coffee +178 -0
  34. data/lib/assets/javascripts/code_sync/editor/plugins/element_sync.coffee +111 -0
  35. data/lib/assets/javascripts/code_sync/editor/plugins/keymap_selector.coffee +44 -0
  36. data/lib/assets/javascripts/code_sync/editor/plugins/mode_selector.coffee +53 -0
  37. data/lib/assets/javascripts/code_sync/editor/plugins/name_input.coffee +44 -0
  38. data/lib/assets/javascripts/code_sync/editor/plugins/preferences.coffee +71 -0
  39. data/lib/assets/javascripts/code_sync/editor/templates/asset_editor.jst.skim +2 -0
  40. data/lib/assets/javascripts/code_sync/editor/templates/asset_selector.jst.skim +5 -0
  41. data/lib/assets/javascripts/code_sync/editor/templates/document_manager_tab.jst.skim +15 -0
  42. data/lib/assets/javascripts/code_sync/editor/templates/element_sync.jst.skim +19 -0
  43. data/lib/assets/javascripts/code_sync/editor/templates/preferences_panel.jst.skim +38 -0
  44. data/lib/assets/javascripts/code_sync/editor/views/asset_selector.coffee +106 -0
  45. data/lib/assets/javascripts/code_sync/editor/views/color_picker.coffee +76 -0
  46. data/lib/assets/javascripts/code_sync/editor/views/document_manager.coffee +176 -0
  47. data/lib/assets/javascripts/code_sync/editor/views/keymap_selector.coffee +37 -0
  48. data/lib/assets/javascripts/code_sync/editor/views/mode_selector.coffee +47 -0
  49. data/lib/assets/javascripts/code_sync/editor/views/name_input.coffee +44 -0
  50. data/lib/assets/javascripts/code_sync/editor/views/preferences.coffee +71 -0
  51. data/lib/assets/javascripts/code_sync/index.coffee +4 -0
  52. data/lib/assets/javascripts/code_sync/reloader.coffee +2 -0
  53. data/lib/assets/javascripts/code_sync_basic.coffee +1 -0
  54. data/lib/assets/javascripts/demos.coffee +48 -0
  55. data/lib/assets/javascripts/demos/default-content.coffee +72 -0
  56. data/lib/assets/javascripts/demos/layout_selector.coffee +19 -0
  57. data/lib/assets/javascripts/demos/tour.coffee +70 -0
  58. data/lib/assets/javascripts/demos/tour.jst.skim +29 -0
  59. data/lib/assets/javascripts/marketing.coffee +0 -0
  60. data/lib/assets/javascripts/vendor/.DS_Store +0 -0
  61. data/lib/assets/javascripts/vendor/backbone-events.js +160 -0
  62. data/lib/assets/javascripts/vendor/backbone-min.js +4 -0
  63. data/lib/assets/javascripts/vendor/codemirror-coffeescript.js +346 -0
  64. data/lib/assets/javascripts/vendor/codemirror-css.js +570 -0
  65. data/lib/assets/javascripts/vendor/codemirror-haml.js +153 -0
  66. data/lib/assets/javascripts/vendor/codemirror-htmlmixed.js +104 -0
  67. data/lib/assets/javascripts/vendor/codemirror-javascript.js +468 -0
  68. data/lib/assets/javascripts/vendor/codemirror-markdown.js +526 -0
  69. data/lib/assets/javascripts/vendor/codemirror-ruby.js +194 -0
  70. data/lib/assets/javascripts/vendor/codemirror-sass.js +330 -0
  71. data/lib/assets/javascripts/vendor/codemirror-skim.js +330 -0
  72. data/lib/assets/javascripts/vendor/codemirror-vim.js +3159 -0
  73. data/lib/assets/javascripts/vendor/codemirror-xml.js +328 -0
  74. data/lib/assets/javascripts/vendor/console.js +339 -0
  75. data/lib/assets/javascripts/vendor/gisted.js +27 -0
  76. data/lib/assets/javascripts/vendor/jquery-ui-resize-drag.min.js +6 -0
  77. data/lib/assets/javascripts/vendor/jquery.js +5 -0
  78. data/lib/assets/javascripts/vendor/keylauncher.js +4 -0
  79. data/lib/assets/javascripts/vendor/keymaster.min.js +4 -0
  80. data/lib/assets/javascripts/vendor/spectrum.js +1868 -0
  81. data/lib/assets/javascripts/vendor/underscore-min.js +1 -0
  82. data/lib/assets/javascripts/vendor/underscore.string.min.js +1 -0
  83. data/lib/assets/javascripts/vendor/vendored_codemirror.js +5558 -0
  84. data/lib/assets/javascripts/vendor/zepto.js +2 -0
  85. data/lib/assets/stylesheets/canvas.css.scss +101 -0
  86. data/lib/assets/stylesheets/code_sync.css.scss +4 -0
  87. data/lib/assets/stylesheets/code_sync/codemirror.css +7 -0
  88. data/lib/assets/stylesheets/code_sync/console.css +86 -0
  89. data/lib/assets/stylesheets/code_sync/editor/asset-name-input.css.scss +12 -0
  90. data/lib/assets/stylesheets/code_sync/editor/asset-selector.css.scss +58 -0
  91. data/lib/assets/stylesheets/code_sync/editor/codesync-color-picker.css.sass +5 -0
  92. data/lib/assets/stylesheets/code_sync/editor/document-tabs.css.scss +61 -0
  93. data/lib/assets/stylesheets/code_sync/editor/element-sync.css.scss +72 -0
  94. data/lib/assets/stylesheets/code_sync/editor/mode-selector.css.scss +0 -0
  95. data/lib/assets/stylesheets/code_sync/editor/preferences-panel.css.scss +26 -0
  96. data/lib/assets/stylesheets/code_sync/index.css.scss +141 -0
  97. data/lib/assets/stylesheets/demos.css.scss +96 -0
  98. data/lib/assets/stylesheets/marketing.css.sass +46 -0
  99. data/lib/assets/stylesheets/marketing/syntax.css.scss +1 -0
  100. data/lib/assets/stylesheets/vendor/animate.css +1 -0
  101. data/lib/assets/stylesheets/vendor/codemirror-ambiance.css +75 -0
  102. data/lib/assets/stylesheets/vendor/codemirror-lesserdark.css +44 -0
  103. data/lib/assets/stylesheets/vendor/codemirror-monokai.css +28 -0
  104. data/lib/assets/stylesheets/vendor/codemirror-xq-light.css +43 -0
  105. data/lib/assets/stylesheets/vendor/grid-layout.css +1406 -0
  106. data/lib/assets/stylesheets/vendor/spectrum.css +481 -0
  107. data/lib/assets/stylesheets/vendor/vendored_codemirror.css +246 -0
  108. data/lib/code_sync.rb +41 -0
  109. data/lib/code_sync/cli.rb +73 -0
  110. data/lib/code_sync/manager.rb +238 -0
  111. data/lib/code_sync/processors.rb +18 -0
  112. data/lib/code_sync/processors/basic.rb +9 -0
  113. data/lib/code_sync/processors/jst_processor.rb +17 -0
  114. data/lib/code_sync/pry_console.rb +132 -0
  115. data/lib/code_sync/rails.rb +7 -0
  116. data/lib/code_sync/rails/engine.rb +12 -0
  117. data/lib/code_sync/server.rb +225 -0
  118. data/lib/code_sync/sprockets_adapter.rb +145 -0
  119. data/lib/code_sync/temp_asset.rb +20 -0
  120. data/lib/code_sync/version.rb +3 -0
  121. data/lib/middleman_extension.rb +43 -0
  122. data/readme.md +26 -0
  123. data/site/.gitignore +14 -0
  124. data/site/Gemfile +13 -0
  125. data/site/Gemfile.lock +183 -0
  126. data/site/config.rb +26 -0
  127. data/site/source/canvas.html.slim +21 -0
  128. data/site/source/codepen-style-demo.html.slim +21 -0
  129. data/site/source/demo.html.slim +30 -0
  130. data/site/source/index.html.slim +128 -0
  131. data/site/source/layouts/layout.slim +18 -0
  132. data/site/source/samples/_client.html.md +13 -0
  133. data/site/source/samples/_editor.html.md +19 -0
  134. data/site/source/samples/_hooks.html.md +8 -0
  135. data/site/source/samples/_middleman.html.md +7 -0
  136. data/site/source/samples/_rails.html.md +8 -0
  137. data/site/source/samples/_standalone.html.md +36 -0
  138. data/spec/lib/code_sync/sprockets_adapter_spec.rb +44 -0
  139. data/spec/spec_helper.rb +21 -0
  140. data/spec/support/.DS_Store +0 -0
  141. data/spec/support/dummy_middleman/.gitignore +14 -0
  142. data/spec/support/dummy_middleman/Gemfile +5 -0
  143. data/spec/support/dummy_middleman/Gemfile.lock +100 -0
  144. data/spec/support/dummy_middleman/config.rb +77 -0
  145. data/spec/support/dummy_middleman/source/images/background.png +0 -0
  146. data/spec/support/dummy_middleman/source/images/middleman.png +0 -0
  147. data/spec/support/dummy_middleman/source/index.html.erb +10 -0
  148. data/spec/support/dummy_middleman/source/javascripts/all.js +1 -0
  149. data/spec/support/dummy_middleman/source/layouts/layout.erb +19 -0
  150. data/spec/support/dummy_middleman/source/stylesheets/all.css +55 -0
  151. data/spec/support/dummy_middleman/source/stylesheets/normalize.css +375 -0
  152. data/spec/support/dummy_rails/.gitignore +15 -0
  153. data/spec/support/dummy_rails/Gemfile +38 -0
  154. data/spec/support/dummy_rails/Gemfile.lock +112 -0
  155. data/spec/support/dummy_rails/README.rdoc +261 -0
  156. data/spec/support/dummy_rails/Rakefile +7 -0
  157. data/spec/support/dummy_rails/app/assets/images/rails.png +0 -0
  158. data/spec/support/dummy_rails/app/assets/javascripts/application.js +15 -0
  159. data/spec/support/dummy_rails/app/assets/stylesheets/application.css +13 -0
  160. data/spec/support/dummy_rails/app/controllers/application_controller.rb +3 -0
  161. data/spec/support/dummy_rails/app/helpers/application_helper.rb +2 -0
  162. data/spec/support/dummy_rails/app/mailers/.gitkeep +0 -0
  163. data/spec/support/dummy_rails/app/models/.gitkeep +0 -0
  164. data/spec/support/dummy_rails/app/views/layouts/application.html.erb +14 -0
  165. data/spec/support/dummy_rails/config.ru +4 -0
  166. data/spec/support/dummy_rails/config/application.rb +62 -0
  167. data/spec/support/dummy_rails/config/boot.rb +6 -0
  168. data/spec/support/dummy_rails/config/database.yml +25 -0
  169. data/spec/support/dummy_rails/config/environment.rb +5 -0
  170. data/spec/support/dummy_rails/config/environments/development.rb +37 -0
  171. data/spec/support/dummy_rails/config/environments/production.rb +67 -0
  172. data/spec/support/dummy_rails/config/environments/test.rb +37 -0
  173. data/spec/support/dummy_rails/config/initializers/backtrace_silencers.rb +7 -0
  174. data/spec/support/dummy_rails/config/initializers/inflections.rb +15 -0
  175. data/spec/support/dummy_rails/config/initializers/mime_types.rb +5 -0
  176. data/spec/support/dummy_rails/config/initializers/secret_token.rb +7 -0
  177. data/spec/support/dummy_rails/config/initializers/session_store.rb +8 -0
  178. data/spec/support/dummy_rails/config/initializers/wrap_parameters.rb +14 -0
  179. data/spec/support/dummy_rails/config/locales/en.yml +5 -0
  180. data/spec/support/dummy_rails/config/routes.rb +58 -0
  181. data/spec/support/dummy_rails/db/seeds.rb +7 -0
  182. data/spec/support/dummy_rails/doc/README_FOR_APP +2 -0
  183. data/spec/support/dummy_rails/lib/assets/.gitkeep +0 -0
  184. data/spec/support/dummy_rails/lib/tasks/.gitkeep +0 -0
  185. data/spec/support/dummy_rails/log/.gitkeep +0 -0
  186. data/spec/support/dummy_rails/public/404.html +26 -0
  187. data/spec/support/dummy_rails/public/422.html +26 -0
  188. data/spec/support/dummy_rails/public/500.html +25 -0
  189. data/spec/support/dummy_rails/public/favicon.ico +0 -0
  190. data/spec/support/dummy_rails/public/index.html +241 -0
  191. data/spec/support/dummy_rails/public/robots.txt +5 -0
  192. data/spec/support/dummy_rails/script/rails +6 -0
  193. data/spec/support/dummy_rails/test/fixtures/.gitkeep +0 -0
  194. data/spec/support/dummy_rails/test/functional/.gitkeep +0 -0
  195. data/spec/support/dummy_rails/test/integration/.gitkeep +0 -0
  196. data/spec/support/dummy_rails/test/performance/browsing_test.rb +12 -0
  197. data/spec/support/dummy_rails/test/test_helper.rb +13 -0
  198. data/spec/support/dummy_rails/test/unit/.gitkeep +0 -0
  199. data/spec/support/dummy_rails/vendor/assets/javascripts/.gitkeep +0 -0
  200. data/spec/support/dummy_rails/vendor/assets/stylesheets/.gitkeep +0 -0
  201. data/spec/support/dummy_rails/vendor/plugins/.gitkeep +0 -0
  202. data/spec/support/dummy_static/.DS_Store +0 -0
  203. data/spec/support/dummy_static/app/.DS_Store +0 -0
  204. data/spec/support/dummy_static/app/assets/.DS_Store +0 -0
  205. data/spec/support/dummy_static/app/assets/javascripts/manifest.coffee +4 -0
  206. data/spec/support/dummy_static/app/assets/javascripts/spec_application_javascript.coffee +4 -0
  207. data/spec/support/dummy_static/app/assets/stylesheets/spec_application_stylesheet.css.scss +5 -0
  208. data/spec/support/dummy_static/lib/assets/javascripts/spec_library_javascript.coffee +3 -0
  209. data/spec/support/dummy_static/lib/assets/stylesheets/spec_library_stylesheet.css.scss +5 -0
  210. data/spec/support/dummy_static/vendor/assets/javascripts/spec_vendor_javascript.js +5 -0
  211. data/spec/support/dummy_static/vendor/assets/stylesheets/spec_vendor_stylesheets.css +3 -0
  212. data/vendor/assets/stylesheets/code_sync.css +1 -0
  213. 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,2 @@
1
+ .toolbar-wrapper
2
+ .codesync-asset-editor
@@ -0,0 +1,5 @@
1
+ .asset-selector-wrapper
2
+ .search-input
3
+ input placeholder="Type the name of an asset to open it" type="text"
4
+ .search-results-wrapper
5
+ .search-results
@@ -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()