111 lines
3.4 KiB
JavaScript

'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.checkVueVersion = checkVueVersion;
var _vue = require('vue');
var _vue2 = _interopRequireDefault(_vue);
var _application = require('./mixins/application');
var _application2 = _interopRequireDefault(_application);
var _breakpoint = require('./mixins/breakpoint');
var _breakpoint2 = _interopRequireDefault(_breakpoint);
var _theme = require('./mixins/theme');
var _theme2 = _interopRequireDefault(_theme);
var _icons = require('./mixins/icons');
var _icons2 = _interopRequireDefault(_icons);
var _options = require('./mixins/options');
var _options2 = _interopRequireDefault(_options);
var _lang = require('./mixins/lang');
var _lang2 = _interopRequireDefault(_lang);
var _goTo = require('./goTo');
var _goTo2 = _interopRequireDefault(_goTo);
var _console = require('../../util/console');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Vuetify = {
install: function install(Vue) {
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
if (this.installed) return;
this.installed = true;
if (_vue2.default !== Vue) {
(0, _console.consoleError)('Multiple instances of Vue detected\nSee https://github.com/vuetifyjs/vuetify/issues/4068\n\nIf you\'re seeing "$attrs is readonly", it\'s caused by this');
}
checkVueVersion(Vue);
var lang = (0, _lang2.default)(opts.lang);
Vue.prototype.$vuetify = new Vue({
mixins: [(0, _breakpoint2.default)(opts.breakpoint)],
data: {
application: _application2.default,
dark: false,
icons: (0, _icons2.default)(opts.iconfont, opts.icons),
lang: lang,
options: (0, _options2.default)(opts.options),
rtl: opts.rtl,
theme: (0, _theme2.default)(opts.theme)
},
methods: {
goTo: _goTo2.default,
t: lang.t.bind(lang)
}
});
if (opts.directives) {
for (var name in opts.directives) {
Vue.directive(name, opts.directives[name]);
}
}
(function registerComponents(components) {
if (components) {
for (var key in components) {
var component = components[key];
if (component && !registerComponents(component.$_vuetify_subcomponents)) {
Vue.component(key, component);
}
}
return true;
}
return false;
})(opts.components);
},
version: '1.5.12'
};
// Utils
function checkVueVersion(Vue, requiredVue) {
var vueDep = requiredVue || '^2.5.18';
var required = vueDep.split('.', 3).map(function (v) {
return v.replace(/\D/g, '');
}).map(Number);
var actual = Vue.version.split('.', 3).map(function (n) {
return parseInt(n, 10);
});
// Simple semver caret range comparison
var passes = actual[0] === required[0] && ( // major matches
actual[1] > required[1] || // minor is greater
actual[1] === required[1] && actual[2] >= required[2] // or minor is eq and patch is >=
);
if (!passes) {
(0, _console.consoleWarn)('Vuetify requires Vue version ' + vueDep);
}
}
exports.default = Vuetify;
//# sourceMappingURL=index.js.map