Newer
Older
hard-panel / panel / frontend / src / main.js
// Точки входа. Стили кита обязательно подключаются в корне приложения.
// Цветовая тема — Verdant (kit-verdant.css из gnexus-ui-kit 1.0).
import 'gnexus-ui-kit/dist/css/kit-verdant.css'
import 'gnexus-ui-kit/dist/assets/fonts/phosphor-icons/src/css/icons.css'

import { createApp } from 'vue'

import App from './App.vue'
import { router } from './router.js'

createApp(App).use(router).mount('#app')

// PWA: SW кэширует оболочку и hashed-ассеты (стратегии в public/sw.js).
if ('serviceWorker' in navigator && window.location.protocol !== 'file:') {
  window.addEventListener('load', () => {
    navigator.serviceWorker
      .register('/sw.js')
      .then(() =>
        navigator.serviceWorker.ready.then((reg) => {
          // hashed-ассеты первой отрисовки: вход + стили + modulepreload чанки
          const assets = [
            ...document.querySelectorAll(
              'script[type=module][src], link[rel=stylesheet][href], link[rel=modulepreload][href]',
            ),
          ].map((el) => el.getAttribute('src') || el.getAttribute('href'))
          reg.active?.postMessage({ type: 'shell', urls: assets })
        }),
      )
      .catch(() => {})
  })
}