settings.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. var Settings = () => {
  2. var defaults = {
  3. icons: false
  4. }
  5. var state = Object.assign({}, defaults)
  6. chrome.runtime.sendMessage({message: 'options.settings'}, (res) => {
  7. Object.assign(state, res)
  8. m.redraw()
  9. })
  10. var events = {
  11. icon: () => (e) => {
  12. state.icon = !state.icon
  13. chrome.runtime.sendMessage({
  14. message: 'options.icon',
  15. icon: state.icon,
  16. })
  17. }
  18. }
  19. var oncreate = {
  20. ripple: (vnode) => {
  21. mdc.ripple.MDCRipple.attachTo(vnode.dom)
  22. }
  23. }
  24. var onupdate = {
  25. icon: () => (vnode) => {
  26. if (vnode.dom.classList.contains('is-checked') !== state.icon) {
  27. vnode.dom.classList.toggle('is-checked')
  28. }
  29. }
  30. }
  31. var render = () =>
  32. m('.bs-callout m-settings hidden',
  33. m('h4.mdc-typography--headline5', 'Settings'),
  34. m('.m-option m-icon',
  35. m('.m-control',
  36. m('label.mdc-switch m-switch', {
  37. onupdate: onupdate.icon(),
  38. },
  39. m('input.mdc-switch__native-control', {
  40. type: 'checkbox',
  41. checked: state.icon,
  42. onchange: events.icon()
  43. }),
  44. m('.mdc-switch__background', m('.mdc-switch__knob')),
  45. m('span.mdc-switch-label',
  46. m('code', 'Light Extension Icon for Dark Browser Theme')
  47. )
  48. )
  49. )
  50. )
  51. )
  52. return {state, render}
  53. }