Merge branch 'master' into ns-telepathic-atom-global

Conflicts:
	package.json
This commit is contained in:
Nathan Sobo
2013-12-13 09:32:13 -08:00
13 changed files with 216 additions and 60 deletions

View File

@@ -31,6 +31,7 @@ class Pane extends View
# Private:
initialize: (args...) ->
@items = []
if args[0] instanceof telepath.Document
@state = args[0]
@items = _.compact @state.get('items').map (item) ->
@@ -43,6 +44,8 @@ class Pane extends View
deserializer: 'Pane'
items: @items.map (item) -> item.getState?() ? item.serialize()
@handleItemEvents(item) for item in @items
@subscribe @state.get('items'), 'changed', ({index, removedValues, insertedValues, siteId}) =>
return if siteId is @state.siteId
for itemState in removedValues
@@ -188,8 +191,14 @@ class Pane extends View
@state.get('items').splice(index, 0, item.getState?() ? item.serialize()) if options.updateState ? true
@items.splice(index, 0, item)
@trigger 'pane:item-added', [item, index]
@handleItemEvents(item)
item
handleItemEvents: (item) ->
if _.isFunction(item.on)
@subscribe item, 'destroyed', =>
@destroyItem(item) if @state.isAlive()
# Public: Remove the currently active item.
destroyActiveItem: =>
@destroyItem(@activeItem)
@@ -197,11 +206,11 @@ class Pane extends View
# Public: Remove the specified item.
destroyItem: (item) ->
@unsubscribe(item) if _.isFunction(item.off)
@trigger 'pane:before-item-destroyed', [item]
container = @getContainer()
if @promptToSaveItem(item)
container.itemDestroyed(item)
@getContainer()?.itemDestroyed(item)
@removeItem(item)
item.destroy?()
true