Only update atom-styles children on context attribute change if attached

This commit is contained in:
Nathan Sobo
2014-10-15 12:30:53 -06:00
parent 582066915b
commit 2b218d2e01

View File

@@ -1,6 +1,8 @@
{Emitter, CompositeDisposable} = require 'event-kit'
class StylesElement extends HTMLElement
attached: false
createdCallback: ->
@emitter = new Emitter
@styleElementClonesByOriginalElement = new WeakMap
@@ -19,11 +21,17 @@ class StylesElement extends HTMLElement
@emitter.on 'did-update-style-element', callback
attachedCallback: ->
@attached = true
@subscriptions = new CompositeDisposable
@subscriptions.add atom.styles.observeStyleElements(@styleElementAdded.bind(this))
@subscriptions.add atom.styles.onDidRemoveStyleElement(@styleElementRemoved.bind(this))
@subscriptions.add atom.styles.onDidUpdateStyleElement(@styleElementUpdated.bind(this))
detachedCallback: ->
@attached = false
@subscriptions.dispose()
styleElementAdded: (styleElement) ->
return unless styleElement.context is @context
@@ -56,11 +64,9 @@ class StylesElement extends HTMLElement
@emitter.emit 'did-update-style-element', styleElementClone
contextChanged: ->
@styleElementRemoved(child) for child in Array::slice.call(@children)
@context = @getAttribute('context')
@styleElementAdded(styleElement) for styleElement in atom.styles.getStyleElements()
detachedCallback: ->
@subscriptions.dispose()
if @attached
@styleElementRemoved(child) for child in Array::slice.call(@children)
@styleElementAdded(styleElement) for styleElement in atom.styles.getStyleElements()
module.exports = StylesElement = document.registerElement 'atom-styles', prototype: StylesElement.prototype