mirror of
https://github.com/atom/atom.git
synced 2026-01-24 14:28:14 -05:00
Modernize markdown-preview package with package.cson
This commit is contained in:
committed by
Corey Johnson & Kevin Sawicki
parent
ab385e8d38
commit
df962afe0e
@@ -1,9 +0,0 @@
|
||||
DeferredAtomPackage = require 'deferred-atom-package'
|
||||
|
||||
module.exports =
|
||||
class MarkdownPreview extends DeferredAtomPackage
|
||||
loadEvents: ['markdown-preview:toggle']
|
||||
|
||||
instanceClass: 'markdown-preview/src/markdown-preview-view'
|
||||
|
||||
onLoadEvent: (event, instance) -> instance.toggle()
|
||||
@@ -5,19 +5,19 @@ $ = require 'jquery'
|
||||
|
||||
module.exports =
|
||||
class MarkdownPreviewView extends ScrollView
|
||||
@activate: (rootView, state) ->
|
||||
@instance = new this(rootView)
|
||||
@activate: ->
|
||||
@instance = new MarkdownPreviewView
|
||||
|
||||
@content: (rootView) ->
|
||||
@content: ->
|
||||
@div class: 'markdown-preview', tabindex: -1, =>
|
||||
@div class: 'markdown-body', outlet: 'markdownBody'
|
||||
|
||||
initialize: (@rootView) ->
|
||||
initialize: ->
|
||||
super
|
||||
|
||||
@editor = @rootView.getActiveEditor()
|
||||
@subscribe @editor, 'focus', => @detach() unless @detaching
|
||||
@command 'core:cancel', => @detach() unless @detaching
|
||||
rootView.command 'markdown-preview:toggle', => @toggle()
|
||||
@on 'blur', => @detach() unless document.activeElement is this[0]
|
||||
@command 'core:cancel', => @detach()
|
||||
|
||||
toggle: ->
|
||||
if @hasParent()
|
||||
@@ -27,22 +27,23 @@ class MarkdownPreviewView extends ScrollView
|
||||
|
||||
attach: ->
|
||||
return unless @isMarkdownFile(@getActivePath())
|
||||
@rootView.append(this)
|
||||
rootView.append(this)
|
||||
@markdownBody.html(@getLoadingHtml())
|
||||
@loadHtml()
|
||||
@focus()
|
||||
|
||||
detach: ->
|
||||
return if @detaching
|
||||
@detaching = true
|
||||
super
|
||||
@rootView.focus()
|
||||
rootView.focus()
|
||||
@detaching = false
|
||||
|
||||
getActivePath: ->
|
||||
@editor.getPath()
|
||||
rootView.getActiveEditor()?.getPath()
|
||||
|
||||
getActiveText: ->
|
||||
@editor.getText()
|
||||
rootView.getActiveEditor()?.getText()
|
||||
|
||||
getErrorHtml: (error) ->
|
||||
$$$ ->
|
||||
@@ -76,4 +77,4 @@ class MarkdownPreviewView extends ScrollView
|
||||
@markdownBody.html(html) if @hasParent()
|
||||
|
||||
isMarkdownFile: (path) ->
|
||||
fs.isMarkdownExtension(fs.extension(path))
|
||||
path and fs.isMarkdownExtension(fs.extension(path))
|
||||
3
src/packages/markdown-preview/package.cson
Normal file
3
src/packages/markdown-preview/package.cson
Normal file
@@ -0,0 +1,3 @@
|
||||
'main': 'lib/markdown-preview-view'
|
||||
'activationEvents':
|
||||
'markdown-preview:toggle': '.editor'
|
||||
@@ -1,12 +1,12 @@
|
||||
$ = require 'jquery'
|
||||
RootView = require 'root-view'
|
||||
MarkdownPreview = require 'markdown-preview/src/markdown-preview-view'
|
||||
MarkdownPreview = require 'markdown-preview/lib/markdown-preview-view'
|
||||
|
||||
describe "MarkdownPreview", ->
|
||||
[rootView, markdownPreview] = []
|
||||
|
||||
beforeEach ->
|
||||
rootView = new RootView(require.resolve('fixtures/markdown'))
|
||||
atom.loadPackage("markdown-preview")
|
||||
spyOn(MarkdownPreview.prototype, 'loadHtml')
|
||||
|
||||
afterEach ->
|
||||
rootView.deactivate()
|
||||
@@ -15,44 +15,37 @@ describe "MarkdownPreview", ->
|
||||
it "toggles on/off a preview for a .md file", ->
|
||||
rootView.open('file.md')
|
||||
editor = rootView.getActiveEditor()
|
||||
markdownPreview = atom.loadPackage("markdown-preview").getInstance()
|
||||
expect(rootView.find('.markdown-preview')).not.toExist()
|
||||
spyOn(markdownPreview, 'loadHtml')
|
||||
editor.trigger('markdown-preview:toggle')
|
||||
|
||||
markdownPreviewView = rootView.find('.markdown-preview')?.view()
|
||||
expect(rootView.find('.markdown-preview')).toExist()
|
||||
expect(markdownPreview.loadHtml).toHaveBeenCalled();
|
||||
expect(markdownPreviewView.loadHtml).toHaveBeenCalled()
|
||||
markdownPreviewView.trigger('markdown-preview:toggle')
|
||||
expect(rootView.find('.markdown-preview')).not.toExist()
|
||||
|
||||
it "displays a preview for a .markdown file", ->
|
||||
rootView.open('file.markdown')
|
||||
editor = rootView.getActiveEditor()
|
||||
markdownPreview = atom.loadPackage("markdown-preview").getInstance()
|
||||
expect(rootView.find('.markdown-preview')).not.toExist()
|
||||
spyOn(markdownPreview, 'loadHtml')
|
||||
editor.trigger('markdown-preview:toggle')
|
||||
expect(rootView.find('.markdown-preview')).toExist()
|
||||
expect(markdownPreview.loadHtml).toHaveBeenCalled();
|
||||
markdownPreviewView = rootView.find('.markdown-preview')?.view()
|
||||
expect(markdownPreviewView.loadHtml).toHaveBeenCalled()
|
||||
|
||||
it "does not display a preview for non-markdown file", ->
|
||||
rootView.open('file.js')
|
||||
editor = rootView.getActiveEditor()
|
||||
markdownPreview = atom.loadPackage("markdown-preview").getInstance()
|
||||
expect(rootView.find('.markdown-preview')).not.toExist()
|
||||
spyOn(markdownPreview, 'loadHtml')
|
||||
editor.trigger('markdown-preview:toggle')
|
||||
expect(rootView.find('.markdown-preview')).not.toExist()
|
||||
expect(markdownPreview.loadHtml).not.toHaveBeenCalled();
|
||||
expect(MarkdownPreview.prototype.loadHtml).not.toHaveBeenCalled()
|
||||
|
||||
describe "core:cancel event", ->
|
||||
it "removes markdown preview", ->
|
||||
rootView.open('file.md')
|
||||
editor = rootView.getActiveEditor()
|
||||
markdownPreview = atom.loadPackage("markdown-preview").getInstance()
|
||||
expect(rootView.find('.markdown-preview')).not.toExist()
|
||||
spyOn(markdownPreview, 'loadHtml')
|
||||
editor.trigger('markdown-preview:toggle')
|
||||
|
||||
markdownPreviewView = rootView.find('.markdown-preview')?.view()
|
||||
@@ -62,14 +55,19 @@ describe "MarkdownPreview", ->
|
||||
|
||||
describe "when the editor receives focus", ->
|
||||
it "removes the markdown preview view", ->
|
||||
rootView.attachToDom()
|
||||
rootView.open('file.md')
|
||||
editor = rootView.getActiveEditor()
|
||||
markdownPreview = atom.loadPackage("markdown-preview").getInstance()
|
||||
expect(rootView.find('.markdown-preview')).not.toExist()
|
||||
spyOn(markdownPreview, 'loadHtml')
|
||||
editor.trigger('markdown-preview:toggle')
|
||||
|
||||
markdownPreviewView = rootView.find('.markdown-preview')
|
||||
expect(markdownPreviewView).toExist()
|
||||
editor.focus()
|
||||
expect(markdownPreviewView).toExist()
|
||||
expect(rootView.find('.markdown-preview')).not.toExist()
|
||||
|
||||
describe "when no editor is open", ->
|
||||
it "does not attach", ->
|
||||
expect(rootView.getActiveEditor()).toBeFalsy()
|
||||
rootView.trigger('markdown-preview:toggle')
|
||||
expect(rootView.find('.markdown-preview')).not.toExist()
|
||||
|
||||
Reference in New Issue
Block a user