app/assets/javascripts/mercury/region.js.coffee in mercury-rails-0.5.0 vs app/assets/javascripts/mercury/region.js.coffee in mercury-rails-0.6.0
- old
+ new
@@ -1,21 +1,21 @@
class @Mercury.Region
- type = 'region'
constructor: (@element, @window, @options = {}) ->
- @type = 'region' unless @type
- Mercury.log("building #{@type}", @element, @options)
-
+ Mercury.log("building #{@type()}", @element, @options)
@document = @window.document
@name = @element.attr(Mercury.config.regions.identifier)
@history = new Mercury.HistoryBuffer()
@build()
@bindEvents()
@pushHistory()
@element.data('region', @)
+ type: -> 'unknown'
+
+
build: ->
focus: ->
@@ -31,14 +31,14 @@
return if @previewing || Mercury.region != @
@execCommand(options.action, options) if options.action
@element.on 'mousemove', (event) =>
return if @previewing || Mercury.region != @
- snippet = jQuery(event.target).closest('.mercury-snippet')
+ snippet = jQuery(event.target).closest('[data-snippet]')
if snippet.length
@snippet = snippet
- Mercury.trigger('show:toolbar', {type: 'snippet', snippet: @snippet})
+ Mercury.trigger('show:toolbar', {type: 'snippet', snippet: @snippet}) if @snippet.data('snippet')
@element.on 'mouseout', =>
return if @previewing
Mercury.trigger('hide:toolbar', {type: 'snippet', immediately: false})
@@ -50,26 +50,26 @@
# sanitize the html before we return it
container = jQuery('<div>').appendTo(@document.createDocumentFragment())
container.html(@element.html().replace(/^\s+|\s+$/g, ''))
# replace snippet contents to be an identifier
- if filterSnippets then for snippet in container.find('.mercury-snippet')
+ if filterSnippets then for snippet in container.find('[data-snippet]')
snippet = jQuery(snippet)
snippet.attr({contenteditable: null, 'data-version': null})
snippet.html("[#{snippet.data('snippet')}]")
return container.html()
togglePreview: ->
if @previewing
@previewing = false
- @element.addClass(Mercury.config.regions.className).removeClass("#{Mercury.config.regions.className}-preview")
+ @element.attr(Mercury.config.regions.attribute, @type())
@focus() if Mercury.region == @
else
@previewing = true
- @element.addClass("#{Mercury.config.regions.className}-preview").removeClass(Mercury.config.regions.className)
+ @element.removeAttr(Mercury.config.regions.attribute)
Mercury.trigger('region:blurred', {region: @})
execCommand: (action, options = {}) ->
@focus()
@@ -85,10 +85,11 @@
snippets: ->
snippets = {}
for element in @element.find('[data-snippet]')
snippet = Mercury.Snippet.find(jQuery(element).data('snippet'))
+ continue unless snippet
snippet.setVersion(jQuery(element).data('version'))
snippets[snippet.identity] = snippet.serialize()
return snippets
@@ -98,10 +99,10 @@
return data
serialize: ->
return {
- type: @type
+ type: @type()
data: @dataAttributes()
value: @content(null, true)
snippets: @snippets()
}