init component
This commit is contained in:
49
node_modules/buetify/lib/composables/theme/provideTheme.js
generated
vendored
Executable file
49
node_modules/buetify/lib/composables/theme/provideTheme.js
generated
vendored
Executable file
@@ -0,0 +1,49 @@
|
||||
import { getItem, setItem } from 'fp-ts-local-storage';
|
||||
import { constant, constVoid } from 'fp-ts/lib/function';
|
||||
import { getOrElse, none, some } from 'fp-ts/lib/Option';
|
||||
import { provide, shallowRef, watch } from 'vue';
|
||||
export const DEFAULT_THEME_INJECTION = {
|
||||
currentTheme: shallowRef(none),
|
||||
isThemeable: shallowRef(false),
|
||||
setTheme: constVoid
|
||||
};
|
||||
export const THEME_INJECTION_SYMBOL = Symbol('theme');
|
||||
const persistentTheme = getOrElse(constant('dark'))(getItem('theme')());
|
||||
export const ProvideThemePropDefinitions = {
|
||||
isThemeable: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
persistTheme: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
}
|
||||
};
|
||||
export function provideTheme(props) {
|
||||
const isThemeable = shallowRef(props.isThemeable);
|
||||
watch(() => props.isThemeable, themeable => {
|
||||
isThemeable.value = themeable;
|
||||
});
|
||||
const currentTheme = shallowRef(some(persistentTheme));
|
||||
|
||||
function setTheme(newTheme) {
|
||||
currentTheme.value = some(newTheme);
|
||||
|
||||
if (props.persistTheme) {
|
||||
setItem('theme', newTheme)();
|
||||
}
|
||||
}
|
||||
|
||||
const injection = {
|
||||
isThemeable,
|
||||
currentTheme,
|
||||
setTheme
|
||||
};
|
||||
provide(THEME_INJECTION_SYMBOL, injection);
|
||||
return {
|
||||
setTheme,
|
||||
currentTheme,
|
||||
isThemeable
|
||||
};
|
||||
}
|
||||
//# sourceMappingURL=provideTheme.js.map
|
||||
Reference in New Issue
Block a user