routie dev init since i didn't adhere to any proper guidance up until now
This commit is contained in:
+123
@@ -0,0 +1,123 @@
|
||||
// Composables
|
||||
import { createIcons } from "./icons.js";
|
||||
import { createDate, DateAdapterSymbol, DateOptionsSymbol } from "./composables/date/date.js";
|
||||
import { createDefaults, DefaultsSymbol } from "./composables/defaults.js";
|
||||
import { createDisplay, DisplaySymbol } from "./composables/display.js";
|
||||
import { createGoTo, GoToSymbol } from "./composables/goto.js";
|
||||
import { IconSymbol } from "./composables/icons.js";
|
||||
import { createLocale, LocaleSymbol } from "./composables/locale.js";
|
||||
import { createTheme, ThemeSymbol } from "./composables/theme.js"; // Utilities
|
||||
import { effectScope, nextTick, reactive } from 'vue';
|
||||
import { defineComponent, IN_BROWSER, mergeDeep } from "./util/index.js"; // Types
|
||||
// Exports
|
||||
export * from "./composables/index.js";
|
||||
export * from "./types.js";
|
||||
export function createVuetify(vuetify = {}) {
|
||||
const {
|
||||
blueprint,
|
||||
...rest
|
||||
} = vuetify;
|
||||
const options = mergeDeep(blueprint, rest);
|
||||
const {
|
||||
aliases = {},
|
||||
components = {},
|
||||
directives = {}
|
||||
} = options;
|
||||
const scope = effectScope();
|
||||
return scope.run(() => {
|
||||
const defaults = createDefaults(options.defaults);
|
||||
const display = createDisplay(options.display, options.ssr);
|
||||
const theme = createTheme(options.theme);
|
||||
const icons = createIcons(options.icons);
|
||||
const locale = createLocale(options.locale);
|
||||
const date = createDate(options.date, locale);
|
||||
const goTo = createGoTo(options.goTo, locale);
|
||||
function install(app) {
|
||||
for (const key in directives) {
|
||||
app.directive(key, directives[key]);
|
||||
}
|
||||
for (const key in components) {
|
||||
app.component(key, components[key]);
|
||||
}
|
||||
for (const key in aliases) {
|
||||
app.component(key, defineComponent({
|
||||
...aliases[key],
|
||||
name: key,
|
||||
aliasName: aliases[key].name
|
||||
}));
|
||||
}
|
||||
const appScope = effectScope();
|
||||
appScope.run(() => {
|
||||
theme.install(app);
|
||||
});
|
||||
app.onUnmount(() => appScope.stop());
|
||||
app.provide(DefaultsSymbol, defaults);
|
||||
app.provide(DisplaySymbol, display);
|
||||
app.provide(ThemeSymbol, theme);
|
||||
app.provide(IconSymbol, icons);
|
||||
app.provide(LocaleSymbol, locale);
|
||||
app.provide(DateOptionsSymbol, date.options);
|
||||
app.provide(DateAdapterSymbol, date.instance);
|
||||
app.provide(GoToSymbol, goTo);
|
||||
if (IN_BROWSER && options.ssr) {
|
||||
if (app.$nuxt) {
|
||||
app.$nuxt.hook('app:suspense:resolve', () => {
|
||||
display.update();
|
||||
});
|
||||
} else {
|
||||
const {
|
||||
mount
|
||||
} = app;
|
||||
app.mount = (...args) => {
|
||||
const vm = mount(...args);
|
||||
nextTick(() => display.update());
|
||||
app.mount = mount;
|
||||
return vm;
|
||||
};
|
||||
}
|
||||
}
|
||||
if (typeof __VUE_OPTIONS_API__ !== 'boolean' || __VUE_OPTIONS_API__) {
|
||||
app.mixin({
|
||||
computed: {
|
||||
$vuetify() {
|
||||
return reactive({
|
||||
defaults: inject.call(this, DefaultsSymbol),
|
||||
display: inject.call(this, DisplaySymbol),
|
||||
theme: inject.call(this, ThemeSymbol),
|
||||
icons: inject.call(this, IconSymbol),
|
||||
locale: inject.call(this, LocaleSymbol),
|
||||
date: inject.call(this, DateAdapterSymbol)
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
function unmount() {
|
||||
scope.stop();
|
||||
}
|
||||
return {
|
||||
install,
|
||||
unmount,
|
||||
defaults,
|
||||
display,
|
||||
theme,
|
||||
icons,
|
||||
locale,
|
||||
date,
|
||||
goTo
|
||||
};
|
||||
});
|
||||
}
|
||||
export const version = "4.0.6";
|
||||
createVuetify.version = version;
|
||||
|
||||
// Vue's inject() can only be used in setup
|
||||
function inject(key) {
|
||||
const vm = this.$;
|
||||
const provides = vm.parent?.provides ?? vm.vnode.appContext?.provides;
|
||||
if (provides && key in provides) {
|
||||
return provides[key];
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=framework.js.map
|
||||
Reference in New Issue
Block a user