mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-09-24 01:06:07 +08:00
488dff0f90
Converted all references of global atom to NylasEnv Temporary rename atom.io find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.io/temporaryAtomIoReplacement/g' atom.config to NylasEnv.config find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.config/NylasEnv.config/g' atom.packages -> NylasEnv.packages atom.commands -> NylasEnv.commands atom.getLoadSettings find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.commands/NylasEnv.commands/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.getLoadSettings/NylasEnv.getLoadSettings/g' More common atom methods find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.styles/NylasEnv.styles/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.emitError/NylasEnv.emitError/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.inSpecMode/NylasEnv.inSpecMode/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.inDevMode/NylasEnv.inDevMode/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.getWindowType/NylasEnv.getWindowType/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.displayWindow/NylasEnv.displayWindow/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.quit/NylasEnv.quit/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.close/NylasEnv.close/g' More atom method changes find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.keymaps/NylasEnv.keymaps/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.hide/NylasEnv.hide/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.getCurrentWindow/NylasEnv.getCurrentWindow/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.menu/NylasEnv.menu/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.getConfigDirPath/NylasEnv.getConfigDirPath/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.isMainWindow/NylasEnv.isMainWindow/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.finishUnload/NylasEnv.finishUnload/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.isWorkWindow/NylasEnv.isWorkWindow/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.showSaveDialog/NylasEnv.showSaveDialog/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.append/NylasEnv.append/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.confirm/NylasEnv.confirm/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.clipboard/NylasEnv.clipboard/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.getVersion/NylasEnv.getVersion/g' More atom renaming Rename atom methods More atom methods Fix grunt config variable Change atom.cmd to N1.cmd Rename atom.coffee and atom.js to nylas-env.coffee nylas-env.js Fix atom global reference in specs manually Fix atom requires Change engine from atom to nylas got rid of global/nylas-env rename to nylas-win-bootup Fix onWindowPropsChanged to onWindowPropsReceived fix nylas-workspace atom-text-editor to nylas-theme-wrap atom-text-editor -> nylas-theme-wrap Replacing atom keyword AtomWindow -> NylasWindow Replace Atom -> N1 Rename atom items nylas.asar -> atom.asar Remove more atom references Remove 6to5 references Remove license exception for atom
118 lines
4.1 KiB
CoffeeScript
118 lines
4.1 KiB
CoffeeScript
{Emitter, CompositeDisposable} = require 'event-kit'
|
|
|
|
class StylesElement extends HTMLElement
|
|
subscriptions: null
|
|
context: null
|
|
|
|
onDidAddStyleElement: (callback) ->
|
|
@emitter.on 'did-add-style-element', callback
|
|
|
|
onDidRemoveStyleElement: (callback) ->
|
|
@emitter.on 'did-remove-style-element', callback
|
|
|
|
onDidUpdateStyleElement: (callback) ->
|
|
@emitter.on 'did-update-style-element', callback
|
|
|
|
createdCallback: ->
|
|
@emitter = new Emitter
|
|
@styleElementClonesByOriginalElement = new WeakMap
|
|
|
|
attachedCallback: ->
|
|
if @context is 'nylas-theme-wrap'
|
|
for styleElement in @children
|
|
@upgradeDeprecatedSelectors(styleElement)
|
|
@initialize()
|
|
|
|
detachedCallback: ->
|
|
@subscriptions.dispose()
|
|
@subscriptions = null
|
|
|
|
attributeChangedCallback: (attrName, oldVal, newVal) ->
|
|
@contextChanged() if attrName is 'context'
|
|
|
|
initialize: ->
|
|
return if @subscriptions?
|
|
|
|
@subscriptions = new CompositeDisposable
|
|
@context = @getAttribute('context') ? undefined
|
|
|
|
@subscriptions.add NylasEnv.styles.observeStyleElements(@styleElementAdded.bind(this))
|
|
@subscriptions.add NylasEnv.styles.onDidRemoveStyleElement(@styleElementRemoved.bind(this))
|
|
@subscriptions.add NylasEnv.styles.onDidUpdateStyleElement(@styleElementUpdated.bind(this))
|
|
|
|
contextChanged: ->
|
|
return unless @subscriptions?
|
|
|
|
@styleElementRemoved(child) for child in Array::slice.call(@children)
|
|
@context = @getAttribute('context')
|
|
@styleElementAdded(styleElement) for styleElement in NylasEnv.styles.getStyleElements()
|
|
|
|
styleElementAdded: (styleElement) ->
|
|
return unless @styleElementMatchesContext(styleElement)
|
|
|
|
styleElementClone = styleElement.cloneNode(true)
|
|
styleElementClone.sourcePath = styleElement.sourcePath
|
|
styleElementClone.context = styleElement.context
|
|
styleElementClone.priority = styleElement.priority
|
|
@styleElementClonesByOriginalElement.set(styleElement, styleElementClone)
|
|
|
|
priority = styleElement.priority
|
|
if priority?
|
|
for child in @children
|
|
if child.priority > priority
|
|
insertBefore = child
|
|
break
|
|
|
|
@insertBefore(styleElementClone, insertBefore)
|
|
|
|
if @context is 'nylas-theme-wrap'
|
|
@upgradeDeprecatedSelectors(styleElementClone)
|
|
|
|
@emitter.emit 'did-add-style-element', styleElementClone
|
|
|
|
styleElementRemoved: (styleElement) ->
|
|
return unless @styleElementMatchesContext(styleElement)
|
|
|
|
styleElementClone = @styleElementClonesByOriginalElement.get(styleElement) ? styleElement
|
|
styleElementClone.remove()
|
|
@emitter.emit 'did-remove-style-element', styleElementClone
|
|
|
|
styleElementUpdated: (styleElement) ->
|
|
return unless @styleElementMatchesContext(styleElement)
|
|
|
|
styleElementClone = @styleElementClonesByOriginalElement.get(styleElement)
|
|
styleElementClone.textContent = styleElement.textContent
|
|
@emitter.emit 'did-update-style-element', styleElementClone
|
|
|
|
styleElementMatchesContext: (styleElement) ->
|
|
not @context? or styleElement.context is @context
|
|
|
|
upgradeDeprecatedSelectors: (styleElement) ->
|
|
return unless styleElement.sheet?
|
|
|
|
upgradedSelectors = []
|
|
|
|
for rule in styleElement.sheet.cssRules
|
|
continue unless rule.selectorText?
|
|
continue if /\:host/.test(rule.selectorText)
|
|
|
|
inputSelector = rule.selectorText
|
|
outputSelector = rule.selectorText
|
|
.replace(/\.editor-colors($|[ >])/g, ':host$1')
|
|
.replace(/\.editor([:.][^ ,>]+)/g, ':host($1)')
|
|
.replace(/\.editor($|[ ,>])/g, ':host$1')
|
|
|
|
unless inputSelector is outputSelector
|
|
rule.selectorText = outputSelector
|
|
upgradedSelectors.push({inputSelector, outputSelector})
|
|
|
|
if upgradedSelectors.length > 0
|
|
warning = "Upgraded the following syntax theme selectors in `#{styleElement.sourcePath}` for shadow DOM compatibility:\n\n"
|
|
for {inputSelector, outputSelector} in upgradedSelectors
|
|
warning += "`#{inputSelector}` => `#{outputSelector}`\n"
|
|
|
|
warning += "\nSee the upgrade guide for information on removing this warning."
|
|
console.warn(warning)
|
|
|
|
module.exports = StylesElement = document.registerElement 'nylas-styles', prototype: StylesElement.prototype
|