UNPKG

th-vue-material

Version:
554 lines (460 loc) 15.9 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else if(typeof exports === 'object') exports["VueMaterial"] = factory(); else root["VueMaterial"] = factory(); })(this, (function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // identity function for calling harmony imports with the correct context /******/ __webpack_require__.i = function(value) { return value; }; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = "/"; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 475); /******/ }) /************************************************************************/ /******/ ({ /***/ 0: /***/ (function(module, exports) { module.exports = function normalizeComponent ( rawScriptExports, compiledTemplate, scopeId, cssModules ) { var esModule var scriptExports = rawScriptExports = rawScriptExports || {} // ES6 modules interop var type = typeof rawScriptExports.default if (type === 'object' || type === 'function') { esModule = rawScriptExports scriptExports = rawScriptExports.default } // Vue.extend constructor export interop var options = typeof scriptExports === 'function' ? scriptExports.options : scriptExports // render functions if (compiledTemplate) { options.render = compiledTemplate.render options.staticRenderFns = compiledTemplate.staticRenderFns } // scopedId if (scopeId) { options._scopeId = scopeId } // inject cssModules if (cssModules) { var computed = options.computed || (options.computed = {}) Object.keys(cssModules).forEach((function (key) { var module = cssModules[key] computed[key] = function () { return module } })) } return { esModule: esModule, exports: scriptExports, options: options } } /***/ }), /***/ 114: /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = install; var _mdTheme = __webpack_require__(120); var _mdTheme2 = _interopRequireDefault(_mdTheme); var _mdInkRipple = __webpack_require__(119); var _mdInkRipple2 = _interopRequireDefault(_mdInkRipple); var _core = __webpack_require__(290); var _core2 = _interopRequireDefault(_core); __webpack_require__(225); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /* Code Components */ function install(Vue) { if (install.installed) { console.warn('Vue Material is already installed.'); return; } install.installed = true; Vue.use(_mdTheme2.default); Vue.use(_mdInkRipple2.default); Vue.material.styles.push(_core2.default); } /* Core Stylesheets */ module.exports = exports['default']; /***/ }), /***/ 119: /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = install; var _mdInkRipple = __webpack_require__(365); var _mdInkRipple2 = _interopRequireDefault(_mdInkRipple); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function install(Vue) { Vue.component('md-ink-ripple', _mdInkRipple2.default); } module.exports = exports['default']; /***/ }), /***/ 120: /***/ (function(module, exports) { throw new Error("Module build failed: SyntaxError: Unexpected token (130:0)\n\n\u001b[0m \u001b[90m 128 | \u001b[39m palette[name] \u001b[33m=\u001b[39m spec\u001b[33m;\u001b[39m\n \u001b[90m 129 | \u001b[39m }\u001b[33m,\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 130 | \u001b[39m\u001b[33m<<\u001b[39m\u001b[33m<<\u001b[39m\u001b[33m<<\u001b[39m\u001b[33m<\u001b[39m \u001b[33mUpdated\u001b[39m upstream\n \u001b[90m | \u001b[39m\u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 131 | \u001b[39m useTheme(name) {\n \u001b[90m 132 | \u001b[39m \u001b[36mif\u001b[39m (name \u001b[36min\u001b[39m injectedStyles) {\n \u001b[90m 133 | \u001b[39m \u001b[36mreturn\u001b[39m\u001b[33m;\u001b[39m\u001b[0m\n"); /***/ }), /***/ 197: /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); // // // // // // // // var addEvent = function addEvent(target, type, handler) { if (type === 'start') { target.addEventListener('mousedown', handler); target.addEventListener('touchstart', handler); } else { target.addEventListener('mouseup', handler); target.addEventListener('touchend', handler); } }; var removeEvent = function removeEvent(target, type, handler) { if (type === 'start') { target.removeEventListener('mousedown', handler); target.removeEventListener('touchstart', handler); } else { target.removeEventListener('mouseup', handler); target.removeEventListener('touchend', handler); } }; exports.default = { name: 'md-ink-ripple', props: { mdDisabled: Boolean }, data: function data() { return { mounted: false, rippleElement: null, parentElement: null, parentDimensions: { width: null, height: null, top: null, left: null }, awaitingComplete: false, hasCompleted: false, fadeOut: false, active: false }; }, computed: { classes: function classes() { return { 'md-fadeout': this.fadeOut, 'md-active': this.active }; }, styles: function styles() { return { width: this.parentDimensions.width, height: this.parentDimensions.height, top: this.parentDimensions.top, left: this.parentDimensions.left }; }, disabled: function disabled() { return this.mdDisabled || !this.$material.inkRipple; } }, watch: { disabled: function disabled(_disabled) { if (!_disabled) { this.init(); } else { this.destroy(); } } }, methods: { checkAvailablePositions: function checkAvailablePositions(element) { var availablePositions = ['relative', 'absolute', 'fixed']; return availablePositions.indexOf(getComputedStyle(element).position) > -1; }, getClosestPositionedParent: function getClosestPositionedParent(element) { var parent = element && element.parentNode; if (!parent || parent.tagName.toLowerCase() === 'body') { return false; } if (this.checkAvailablePositions(element)) { return element; } return this.getClosestPositionedParent(parent); }, getParentSize: function getParentSize() { var parent = this.parentElement; return Math.round(Math.max(parent.offsetWidth, parent.offsetHeight)) + 'px'; }, getClickPosition: function getClickPosition(event) { if (this.$refs.ripple) { var rect = this.parentElement.getBoundingClientRect(); var top = event.pageY; var left = event.pageX; if (event.type === 'touchstart') { top = event.changedTouches[0].pageY; left = event.changedTouches[0].pageX; } return { top: top - rect.top - this.$refs.ripple.offsetHeight / 2 - document.body.scrollTop + 'px', left: left - rect.left - this.$refs.ripple.offsetWidth / 2 - document.body.scrollLeft + 'px' }; } return false; }, setDimensions: function setDimensions() { var size = this.getParentSize(); this.parentDimensions.width = size; this.parentDimensions.height = size; }, setPositions: function setPositions(event) { var positions = this.getClickPosition(event); if (positions) { this.parentDimensions.top = positions.top; this.parentDimensions.left = positions.left; } }, clearState: function clearState() { this.active = false; this.fadeOut = false; this.hasCompleted = false; this.setDimensions(); window.clearTimeout(this.awaitingComplete); removeEvent(document.body, 'end', this.endRipple); }, startRipple: function startRipple(event) { var _this = this; if (event.type === 'touchstart') { this.previous.push('touch'); } else { this.previous.push('mouse'); } this.previous = this.previous.splice(this.previous.length - 2, this.previous.length); if (this.previous.length >= 2 && this.previous[1] === 'touch' && this.previous[0] === 'mouse') { return; } this.clearState(); this.awaitingComplete = window.setTimeout((function () { _this.hasCompleted = true; }), 400); addEvent(document.body, 'end', this.endRipple); this.$nextTick((function () { _this.setPositions(event); _this.active = true; })); }, endRipple: function endRipple() { var _this2 = this; if (this.hasCompleted) { this.fadeOut = true; } else { this.awaitingComplete = window.setTimeout((function () { _this2.fadeOut = true; }), 200); } removeEvent(document.body, 'end', this.endRipple); }, registerTriggerEvent: function registerTriggerEvent() { addEvent(this.parentElement, 'start', this.startRipple); }, unregisterTriggerEvent: function unregisterTriggerEvent() { if (this.parentElement) { removeEvent(this.parentElement, 'start', this.startRipple); } }, init: function init() { this.rippleElement = this.$el; this.parentElement = this.getClosestPositionedParent(this.$el.parentNode); this.previous = ['mouse']; if (this.parentElement) { this.rippleElement.parentNode.removeChild(this.rippleElement); if (this.parentElement.querySelectorAll('.md-ink-ripple').length > 0) { this.$destroy(); } else { this.parentElement.appendChild(this.rippleElement); this.registerTriggerEvent(); this.setDimensions(); } } else { this.$destroy(); } }, destroy: function destroy() { if (this.rippleElement && this.rippleElement.parentNode) { this.unregisterTriggerEvent(); this.rippleElement.parentNode.removeChild(this.rippleElement); } } }, mounted: function mounted() { var _this3 = this; window.setTimeout((function () { if (!_this3.disabled) { _this3.init(); } else { _this3.destroy(); } _this3.$nextTick((function () { _this3.mounted = true; })); }), 100); }, beforeDestroy: function beforeDestroy() { this.destroy(); } }; module.exports = exports['default']; /***/ }), /***/ 225: /***/ (function(module, exports) { // removed by extract-text-webpack-plugin /***/ }), /***/ 248: /***/ (function(module, exports) { // removed by extract-text-webpack-plugin /***/ }), /***/ 290: /***/ (function(module, exports) { module.exports = ".THEME_NAME :not(input):not(textarea)::selection {\n background: ACCENT-COLOR;\n color: ACCENT-CONTRAST; }\n\n.THEME_NAME a:not(.md-button) {\n color: ACCENT-COLOR; }\n .THEME_NAME a:not(.md-button):hover {\n color: ACCENT-COLOR-800; }\n\nbody.THEME_NAME {\n background-color: BACKGROUND-COLOR;\n color: BACKGROUND-CONTRAST-0.87; }\n\n/* Typography */\n.THEME_NAME .md-caption,\n.THEME_NAME .md-display-1,\n.THEME_NAME .md-display-2,\n.THEME_NAME .md-display-3,\n.THEME_NAME .md-display-4 {\n color: BACKGROUND-CONTRAST-0.57; }\n\n.THEME_NAME code:not(.hljs) {\n background-color: ACCENT-COLOR-A100-0.2;\n color: ACCENT-COLOR-800; }\n" /***/ }), /***/ 365: /***/ (function(module, exports, __webpack_require__) { /* styles */ __webpack_require__(248) var Component = __webpack_require__(0)( /* script */ __webpack_require__(197), /* template */ __webpack_require__(420), /* scopeId */ null, /* cssModules */ null ) Component.options.__file = "/Users/bolander/Sites/vue-material/src/core/components/mdInkRipple/mdInkRipple.vue" if (Component.esModule && Object.keys(Component.esModule).some((function (key) {return key !== "default" && key !== "__esModule"}))) {console.error("named exports are not supported in *.vue files.")} if (Component.options.functional) {console.error("[vue-loader] mdInkRipple.vue: functional components are not supported with templates, they should use render functions.")} /* hot reload */ if (false) {(function () { var hotAPI = require("vue-hot-reload-api") hotAPI.install(require("vue"), false) if (!hotAPI.compatible) return module.hot.accept() if (!module.hot.data) { hotAPI.createRecord("data-v-62c1a2f0", Component.options) } else { hotAPI.reload("data-v-62c1a2f0", Component.options) } })()} module.exports = Component.exports /***/ }), /***/ 420: /***/ (function(module, exports, __webpack_require__) { module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; return (_vm.mounted || !_vm.disabled) ? _c('div', { staticClass: "md-ink-ripple" }, [_c('div', { ref: "ripple", staticClass: "md-ripple", class: _vm.classes, style: (_vm.styles) })]) : _vm._e() },staticRenderFns: []} module.exports.render._withStripped = true if (false) { module.hot.accept() if (module.hot.data) { require("vue-hot-reload-api").rerender("data-v-62c1a2f0", module.exports) } } /***/ }), /***/ 475: /***/ (function(module, exports, __webpack_require__) { module.exports = __webpack_require__(114); /***/ }) /******/ }); }));