const {each, dom} = require('../util'); const event = require('../core/event'); const resource = require('../core/resource'); const allsettings = require('../core/settings'); const sidebar = require('./sidebar'); const base = require('./base'); const view = require('./view'); const settings = Object.assign({ modeToggle: false }, allsettings.view); const tplSettings = '

View

'; const tplMode = `
viewmode-[MODE]
`; const tplSize = ''; const tplToggle = `
viewmode
`; let modes; let sizes; const onChanged = (mode, size) => { dom('#viewmode-settings .mode').rmCls('active'); dom('#viewmode-' + mode).addCls('active'); dom('#viewmode-size').val(sizes.indexOf(size)); if (settings.modeToggle === 'next') { mode = modes[(modes.indexOf(mode) + 1) % modes.length]; } dom('#viewmode-toggle img').attr('src', resource.image('view-' + mode)); }; const addSettings = () => { if (modes.length < 2 && sizes.length < 2) { return; } const $viewBlock = dom(tplSettings); if (modes.length > 1) { each(modes, mode => { dom(tplMode.replace(/\[MODE\]/g, mode)) .on('click', () => { view.setMode(mode); }) .appTo($viewBlock); }); } if (sizes.length > 1) { const max = sizes.length - 1; dom(tplSize) .attr('max', max) .on('input', ev => view.setSize(sizes[ev.target.valueAsNumber])) .on('change', ev => view.setSize(sizes[ev.target.valueAsNumber])) .appTo($viewBlock); } $viewBlock.appTo(sidebar.$el); }; const onToggle = () => { const mode = view.getMode(); const nextIdx = (modes.indexOf(mode) + 1) % modes.length; const nextMode = modes[nextIdx]; view.setMode(nextMode); }; const addToggle = () => { if (settings.modeToggle && modes.length > 1) { dom(tplToggle) .on('click', onToggle) .appTo(base.$toolbar); } }; const init = () => { modes = view.getModes(); sizes = view.getSizes(); addSettings(); addToggle(); onChanged(view.getMode(), view.getSize()); event.sub('view.mode.changed', onChanged); }; init();