|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- import * as Theme from '../../../util/theme';
- export default {
- data: function data() {
- return {
- style: null
- };
- },
- computed: {
- parsedTheme: function parsedTheme() {
- return Theme.parse(this.$vuetify.theme);
- },
-
- /** @return string */
- generatedStyles: function generatedStyles() {
- var theme = this.parsedTheme;
- var css = void 0;
- if (this.$vuetify.options.themeCache != null) {
- css = this.$vuetify.options.themeCache.get(theme);
- if (css != null) return css;
- }
- css = Theme.genStyles(theme, this.$vuetify.options.customProperties);
- if (this.$vuetify.options.minifyTheme != null) {
- css = this.$vuetify.options.minifyTheme(css);
- }
- if (this.$vuetify.options.themeCache != null) {
- this.$vuetify.options.themeCache.set(theme, css);
- }
- return css;
- },
- vueMeta: function vueMeta() {
- if (this.$vuetify.theme === false) return {};
- var options = {
- cssText: this.generatedStyles,
- id: 'vuetify-theme-stylesheet',
- type: 'text/css'
- };
- if (this.$vuetify.options.cspNonce) {
- options.nonce = this.$vuetify.options.cspNonce;
- }
- return {
- style: [options]
- };
- }
- },
- // Regular vue-meta
- metaInfo: function metaInfo() {
- return this.vueMeta;
- },
-
- // Nuxt
- head: function head() {
- return this.vueMeta;
- },
-
- watch: {
- generatedStyles: function generatedStyles() {
- !this.meta && this.applyTheme();
- }
- },
- created: function created() {
- if (this.$vuetify.theme === false) return;
- if (this.$meta) {
- // Vue-meta
- // Handled by metaInfo()/nuxt()
- } else if (typeof document === 'undefined' && this.$ssrContext) {
- // SSR
- var nonce = this.$vuetify.options.cspNonce ? ' nonce="' + this.$vuetify.options.cspNonce + '"' : '';
- this.$ssrContext.head = this.$ssrContext.head || '';
- this.$ssrContext.head += '<style type="text/css" id="vuetify-theme-stylesheet"' + nonce + '>' + this.generatedStyles + '</style>';
- } else if (typeof document !== 'undefined') {
- // Client-side
- this.genStyle();
- this.applyTheme();
- }
- },
-
- methods: {
- applyTheme: function applyTheme() {
- if (this.style) this.style.innerHTML = this.generatedStyles;
- },
- genStyle: function genStyle() {
- var style = document.getElementById('vuetify-theme-stylesheet');
- if (!style) {
- style = document.createElement('style');
- style.type = 'text/css';
- style.id = 'vuetify-theme-stylesheet';
- if (this.$vuetify.options.cspNonce) {
- style.setAttribute('nonce', this.$vuetify.options.cspNonce);
- }
- document.head.appendChild(style);
- }
- this.style = style;
- }
- }
- };
- //# sourceMappingURL=app-theme.js.map
|