You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
devdocs/assets/javascripts/views/layout/document.coffee

76 lines
2.1 KiB

class app.views.Document extends app.View
MAX_WIDTH_CLASS = '_max-width'
HIDE_SIDEBAR_CLASS = '_sidebar-hidden'
@el: document
@events:
visibilitychange: 'onVisibilityChange'
@shortcuts:
help: 'onHelp'
escape: 'onEscape'
superLeft: 'onBack'
superRight: 'onForward'
init: ->
@addSubview @nav = new app.views.Nav,
@addSubview @sidebar = new app.views.Sidebar
@addSubview @resizer = new app.views.Resizer if app.views.Resizer.isSupported()
@addSubview @content = new app.views.Content
@addSubview @path = new app.views.Path unless app.isSingleDoc() or app.isMobile()
@activate()
return
toggleLight: ->
css = $('link[rel="stylesheet"][data-alt]')
alt = css.getAttribute('data-alt')
css.setAttribute('data-alt', css.getAttribute('href'))
css.setAttribute('href', alt)
app.settings.setDark(alt.indexOf('dark') > 0)
app.appCache?.updateInBackground()
return
toggleLayout: ->
wantsMaxWidth = !app.el.classList.contains(MAX_WIDTH_CLASS)
app.el.classList[if wantsMaxWidth then 'add' else 'remove'](MAX_WIDTH_CLASS)
app.settings.setLayout(MAX_WIDTH_CLASS, wantsMaxWidth)
app.appCache?.updateInBackground()
return
toggleSidebar: ->
sidebarHidden = app.el.classList.contains(HIDE_SIDEBAR_CLASS)
app.el.classList[if sidebarHidden then 'remove' else 'add'](HIDE_SIDEBAR_CLASS)
app.settings.setLayout(HIDE_SIDEBAR_CLASS, !sidebarHidden)
app.appCache?.updateInBackground()
return
setTitle: (title) ->
@el.title = if title then "DevDocs - #{title}" else 'DevDocs API Documentation'
onVisibilityChange: =>
return unless @el.visibilityState is 'visible'
@delay ->
location.reload() if app.isMobile() isnt app.views.Mobile.detect()
return
, 300
return
onHelp: ->
app.router.show '/help#shortcuts'
onEscape: ->
path = if !app.isSingleDoc() or location.pathname is app.doc.fullPath()
'/'
else
app.doc.fullPath()
app.router.show(path)
onBack: ->
history.back()
onForward: ->
history.forward()