1 utils = require 'utils'
2 prefs = require 'prefs'
5 CONTAINER_ID = 'VimFxHelpDialogContainer'
7 removeHelp = (document) ->
8 if div = document.getElementById(CONTAINER_ID)
9 div.parentNode.removeChild(div)
11 injectHelp = (document, commandsHelp) ->
12 if document.documentElement
13 if div = document.getElementById(CONTAINER_ID)
14 div.parentNode.removeChild(div)
15 div = document.createElement 'div'
17 div.className = 'VimFxReset'
19 div.appendChild(utils.parseHTML(document, helpDialogHtml(commandsHelp)))
21 document.documentElement.appendChild(div)
23 installCheckboxHandlers(document)
25 if button = document.getElementById('VimFxClose')
26 clickHandler = (event) ->
27 event.stopPropagation()
28 event.preventDefault()
30 button.addEventListener('click', clickHandler, false)
32 installCheckboxHandlers = (document) ->
33 cbs = document.getElementsByClassName('VimFxKeyCheckbox')
35 cb.addEventListener 'change', (event)->
36 key = event.target.getAttribute('data-key')
38 # Checkbox if checked => command is in use
39 if event.target.checked
40 prefs.enableCommand(key)
42 prefs.disableCommand(key)
44 td = (text, klass='') ->
45 """<td class="VimFxReset #{ klass }">#{ text }</td>"""
48 disabled = prefs.isCommandDisabled(key)
49 checked = if disabled then null else 'checked'
51 #{ key.replace(/,/g, '').replace('|', ', ') }
52 <span class="VimFxReset VimFxDot">∙</span>
53 <input type="checkbox" class="VimFxReset VimFxKeyCheckbox" data-key="#{ key }" #{ checked }></input>
56 return """<tr class="VimFxReset">#{ td(key, 'VimFxSequence') }#{ td(text) }</tr>"""
60 <table class="VimFxReset">
61 #{ (tr(cmd, text) for cmd, text of commands).join('') }
65 section = (title, commands) ->
67 <div class="VimFxReset VimFxSectionTitle">#{ title }</div>
71 helpDialogHtml = (help) ->
73 <div id="VimFxHelpDialog" class="VimFxReset">
74 <div class="VimFxReset VimFxHeader">
75 <div class="VimFxReset VimFxTitle">
76 <span class="VimFxReset VimFxTitleVim">Vim</span><span class="VimFxReset VimFxTitleFx">Fx</span>
77 <span class="VimFxReset">#{ _('help') }</span>
79 <span class="VimFxReset VimFxVersion">#{ _('help_version') } #{ utils.getVersion() }</span>
80 <a class="VimFxReset VimFxClose" id="VimFxClose" href="#">✖</a>
81 <div class="VimFxReset VimFxClearFix"></div>
84 <div class="VimFxReset VimFxBody">
85 <div class="VimFxReset VimFxColumn">
86 #{ section(_('help_section_urls'), help['urls']) }
87 #{ section(_('help_section_nav'), help['nav']) }
89 <div class="VimFxReset VimFxColumn">
90 #{ section(_('help_section_tabs'), help['tabs']) }
91 #{ section(_('help_section_browse'), help['browse']) }
92 #{ section(_('help_section_misc'), help['misc']) }
94 <div class="VimFxReset VimFxClearFix"></div>
97 <div class="VimFxReset VimFxFooter">
98 <div class="VimFxReset VimFxSocial">
99 <p class="VimFxReset">
100 #{ _('help_found_bug') }
101 <a class="VimFxReset" target="_blank" href="https://github.com/akhodakivskiy/VimFx/issues">
102 #{ _('help_report_bug') }
105 <p class="VimFxReset">
106 #{ _('help_enjoying') }
107 <a class="VimFxReset" target="_blank" href="https://addons.mozilla.org/en-US/firefox/addon/vimfx/">
108 #{ _('help_feedback') }
116 exports.injectHelp = injectHelp
117 exports.removeHelp = removeHelp