temp.coffee 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. globalThis.renderFns = require '../pug.json'
  2. globalThis.stylFns = require '../styl.json'
  3. debug.log "000"
  4. document.head.insertAdjacentHTML 'beforeend','<meta charset="UTF-8">'
  5. document.head.insertAdjacentHTML 'beforeend','<meta name="viewport" content="width=device-width, initial-scale=1.0">'
  6. document.head.insertAdjacentHTML('beforeend','<style>'+stylFns['main.css']+'</style>')
  7. document.head.insertAdjacentHTML('beforeend','<style type="text/tailwindcss">'+stylFns['app/temp.styl']+'</style>')
  8. document.head.insertAdjacentHTML('beforeend','<title> Кохи Борбад - Концертный зал Душанбе</title>')
  9. debug.log "001"
  10. # Маршруты
  11. routes = [
  12. { path: '/', component: require 'app/pages/Home' }
  13. { path: '/events', component: require 'app/pages/Events' }
  14. #{ path: '/about', component: require 'app/pages/About' }
  15. #{ path: '/contacts', component: require 'app/pages/Contacts' }
  16. ]
  17. tailwind.config = require '../tailwind.config.js'
  18. debug.log "002"
  19. # Глобальное состояние темы
  20. app = Vue.createApp
  21. name: 'app'
  22. data: ()->
  23. return {}
  24. beforeMount: ()->
  25. debug.log "start beforeMount"
  26. globalThis._ = @
  27. render: (new Function '_ctx', '_cache', renderFns['app/temp.pug'])()
  28. mounted: ->
  29. # Предзагрузка темы
  30. if localStorage.theme == 'dark' || (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)
  31. @theme = 'dark'
  32. document.documentElement.classList.add('dark')
  33. else
  34. @theme = 'light'
  35. document.documentElement.classList.remove('dark')
  36. methods:
  37. toggleTheme: ->
  38. @theme = if @theme == 'light' then 'dark' else 'light'
  39. localStorage.setItem 'theme', @theme
  40. document.documentElement.classList.toggle 'dark'
  41. @$emit 'theme-changed', @theme
  42. components:
  43. 'themetoggle': require 'app/shared/ThemeToggle'
  44. 'multilevelmenu': require 'app/shared/MultiLevelMenu'
  45. 'imageslider': require 'app/shared/ImageSlider'
  46. app.use(VueRouter.createRouter({
  47. routes: routes
  48. history: VueRouter.createWebHistory()
  49. scrollBehavior: (to, from, savedPosition) ->
  50. if savedPosition
  51. return savedPosition
  52. else
  53. return { x: 0, y: 0 }
  54. }))
  55. app.mount('body')