123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import { reactive } from "vue";
- import { useNuxtApp } from "./nuxt.mjs";
- import { defineNuxtPlugin } from '#app'
- export const _getAppConfig = () => defineNuxtPlugin;
- function deepDelete(obj, newObj) {
- for (const key in obj) {
- const val = newObj[key];
- if (!(key in newObj)) {
- delete obj[key];
- }
- if (val !== null && typeof val === "object") {
- deepDelete(obj[key], newObj[key]);
- }
- }
- }
- function deepAssign(obj, newObj) {
- for (const key in newObj) {
- const val = newObj[key];
- if (val !== null && typeof val === "object") {
- deepAssign(obj[key], val);
- } else {
- obj[key] = val;
- }
- }
- }
- export function useAppConfig() {
- const nuxtApp = useNuxtApp();
- if (!nuxtApp._appConfig) {
- nuxtApp._appConfig = reactive(defineNuxtPlugin);
- }
- return nuxtApp._appConfig;
- }
- export function updateAppConfig(appConfig) {
- const _appConfig = useAppConfig();
- deepAssign(_appConfig, appConfig);
- }
- if (process.dev) {
- let applyHMR = function(newConfig) {
- const appConfig = useAppConfig();
- if (newConfig && appConfig) {
- deepAssign(appConfig, newConfig);
- deepDelete(appConfig, newConfig);
- }
- };
- if (import.meta.hot) {
- import.meta.hot.accept((newModule) => {
- const newConfig = newModule._getAppConfig();
- applyHMR(newConfig);
- });
- }
- if (import.meta.webpackHot) {
- import.meta.webpackHot.accept("#build/app.config.mjs", () => {
- applyHMR(defineNuxtPlugin);
- });
- }
- }
|