mirror of
https://github.com/atom/atom.git
synced 2026-01-24 06:18:03 -05:00
33 lines
1.0 KiB
CoffeeScript
33 lines
1.0 KiB
CoffeeScript
{View} = require './space-pen-extensions'
|
|
PaneView = null
|
|
|
|
module.exports =
|
|
class PaneAxisView extends View
|
|
initialize: (@model) ->
|
|
@onChildAdded(child) for child in @model.children
|
|
@subscribe @model.children, 'changed', @onChildrenChanged
|
|
|
|
afterAttach: ->
|
|
@container = @closest('.panes').view()
|
|
|
|
viewForModel: (model) ->
|
|
viewClass = model.getViewClass()
|
|
model._view ?= new viewClass(model)
|
|
|
|
onChildrenChanged: ({index, removedValues, insertedValues}) =>
|
|
focusedElement = document.activeElement if @hasFocus()
|
|
@onChildRemoved(child, index) for child in removedValues
|
|
@onChildAdded(child, index + i) for child, i in insertedValues
|
|
focusedElement?.focus() if document.activeElement is document.body
|
|
|
|
onChildAdded: (child, index) =>
|
|
view = @viewForModel(child)
|
|
@insertAt(index, view)
|
|
|
|
onChildRemoved: (child) =>
|
|
view = @viewForModel(child)
|
|
view.detach()
|
|
PaneView ?= require './pane-view'
|
|
if view instanceof PaneView and view.model.isDestroyed()
|
|
@container?.trigger 'pane:removed', [view]
|