| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- m.mount(document.querySelector('body'), {
- controller: function () {
- var state = {
- options: [],
- themes: [],
- theme: '',
- raw: false
- }
- function init (res) {
- state.options = res.options
- state.theme = res.theme
- state.themes = chrome.runtime.getManifest().web_accessible_resources
- .filter((file) => (file.indexOf('/themes/') === 0))
- .map((file) => (file.replace(/\/themes\/(.*)\.css/, '$1')))
- state.raw = res.raw
- m.endComputation()
- }
- // init
- m.startComputation()
- chrome.extension.sendMessage({message: 'settings'}, init)
- return {
- state: state,
- changeOptions: (e) => {
- state.options[e.target.name] = !state.options[e.target.name]
- chrome.extension.sendMessage({
- message: 'options',
- options: state.options
- }, (res) => {})
- },
- changeTheme: (e) => {
- state.theme = state.themes[e.target.selectedIndex]
- chrome.extension.sendMessage({
- message: 'theme',
- theme: state.theme
- }, (res) => {})
- },
- viewRaw: () => {
- state.raw = !state.raw
- chrome.extension.sendMessage({
- message: 'raw',
- raw: state.raw,
- theme: state.theme
- }, (res) => {})
- return false
- },
- setDefaults: () => {
- chrome.extension.sendMessage({
- message: 'defaults'
- }, (res) => {
- m.startComputation()
- chrome.extension.sendMessage({message: 'settings'}, init)
- })
- return false
- }
- }
- },
- view: (ctrl) => {
- var state = ctrl.state
- return m('#options', [
- m('a[href=""]', {onclick: ctrl.viewRaw}, (state.raw ? 'Html' : 'Markdown')),
- m('a[href=""]', {onclick: ctrl.setDefaults}, 'Defaults'),
- m('h4', 'Theme'),
- m('select', {onchange: ctrl.changeTheme}, state.themes.map((theme) =>
- m('option', {selected: state.theme === theme}, theme)
- )),
- m('h4', 'Compiler Options'),
- m('ul', Object.keys(state.options).map((key) =>
- m('li',
- m('label',
- m('input[type="checkbox"]', {
- name: key,
- checked: state.options[key],
- onchange: ctrl.changeOptions
- }),
- ' ' + key
- )
- )
- ))
- ])
- }
- })
|