"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; require("../../../src/components/VAppBar/VAppBar.sass"); var _VToolbar = _interopRequireDefault(require("../VToolbar/VToolbar")); var _scroll = _interopRequireDefault(require("../../directives/scroll")); var _applicationable = _interopRequireDefault(require("../../mixins/applicationable")); var _scrollable = _interopRequireDefault(require("../../mixins/scrollable")); var _ssrBootable = _interopRequireDefault(require("../../mixins/ssr-bootable")); var _toggleable = _interopRequireDefault(require("../../mixins/toggleable")); var _helpers = require("../../util/helpers"); var _mixins = _interopRequireDefault(require("../../util/mixins")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var baseMixins = (0, _mixins.default)(_VToolbar.default, _scrollable.default, _ssrBootable.default, _toggleable.default, (0, _applicationable.default)('top', ['clippedLeft', 'clippedRight', 'computedHeight', 'computedTransform', 'invertedScroll', 'isExtended', 'isProminent', 'value'])); /* @vue/component */ var _default = baseMixins.extend({ name: 'v-app-bar', directives: { Scroll: _scroll.default }, props: { clippedLeft: Boolean, clippedRight: Boolean, collapseOnScroll: Boolean, elevateOnScroll: Boolean, fadeImgOnScroll: Boolean, hideOnScroll: Boolean, invertedScroll: Boolean, scrollOffScreen: Boolean, shrinkOnScroll: Boolean, value: { type: Boolean, default: true } }, data: function data() { return { isActive: this.value }; }, computed: { applicationProperty: function applicationProperty() { return !this.bottom ? 'top' : 'bottom'; }, canScroll: function canScroll() { return _scrollable.default.options.computed.canScroll.call(this) && (this.invertedScroll || this.elevateOnScroll || this.hideOnScroll || this.collapseOnScroll || this.isBooted || // If falsey, user has provided an // explicit value which should // overwrite anything we do !this.value); }, classes: function classes() { return _objectSpread({}, _VToolbar.default.options.computed.classes.call(this), { 'v-toolbar--collapse': this.collapse || this.collapseOnScroll, 'v-app-bar': true, 'v-app-bar--clipped': this.clippedLeft || this.clippedRight, 'v-app-bar--fade-img-on-scroll': this.fadeImgOnScroll, 'v-app-bar--elevate-on-scroll': this.elevateOnScroll, 'v-app-bar--fixed': !this.absolute && (this.app || this.fixed), 'v-app-bar--hide-shadow': this.hideShadow, 'v-app-bar--is-scrolled': this.currentScroll > 0, 'v-app-bar--shrink-on-scroll': this.shrinkOnScroll }); }, computedContentHeight: function computedContentHeight() { if (!this.shrinkOnScroll) return _VToolbar.default.options.computed.computedContentHeight.call(this); var height = this.computedOriginalHeight; var min = this.dense ? 48 : 56; var max = height; var difference = max - min; var iteration = difference / this.computedScrollThreshold; var offset = this.currentScroll * iteration; return Math.max(min, max - offset); }, computedFontSize: function computedFontSize() { if (!this.isProminent) return undefined; var max = this.dense ? 96 : 128; var difference = max - this.computedContentHeight; var increment = 0.00347; // 1.5rem to a minimum of 1.25rem return Number((1.50 - difference * increment).toFixed(2)); }, computedLeft: function computedLeft() { if (!this.app || this.clippedLeft) return 0; return this.$vuetify.application.left; }, computedMarginTop: function computedMarginTop() { if (!this.app) return 0; return this.$vuetify.application.bar; }, computedOpacity: function computedOpacity() { if (!this.fadeImgOnScroll) return undefined; var opacity = Math.max((this.computedScrollThreshold - this.currentScroll) / this.computedScrollThreshold, 0); return Number(parseFloat(opacity).toFixed(2)); }, computedOriginalHeight: function computedOriginalHeight() { var height = _VToolbar.default.options.computed.computedContentHeight.call(this); if (this.isExtended) height += parseInt(this.extensionHeight); return height; }, computedRight: function computedRight() { if (!this.app || this.clippedRight) return 0; return this.$vuetify.application.right; }, computedScrollThreshold: function computedScrollThreshold() { if (this.scrollThreshold) return Number(this.scrollThreshold); return this.computedOriginalHeight - (this.dense ? 48 : 56); }, computedTransform: function computedTransform() { if (!this.canScroll || this.elevateOnScroll && this.currentScroll === 0) return 0; if (this.isActive) return 0; return this.scrollOffScreen ? -this.computedHeight : -this.computedContentHeight; }, hideShadow: function hideShadow() { if (this.elevateOnScroll) { return this.currentScroll === 0 || this.computedTransform < 0; } return (!this.isExtended || this.scrollOffScreen) && this.computedTransform !== 0; }, isCollapsed: function isCollapsed() { if (!this.collapseOnScroll) { return _VToolbar.default.options.computed.isCollapsed.call(this); } return this.currentScroll > 0; }, isProminent: function isProminent() { return _VToolbar.default.options.computed.isProminent.call(this) || this.shrinkOnScroll; }, styles: function styles() { return _objectSpread({}, _VToolbar.default.options.computed.styles.call(this), { fontSize: (0, _helpers.convertToUnit)(this.computedFontSize, 'rem'), marginTop: (0, _helpers.convertToUnit)(this.computedMarginTop), transform: "translateY(".concat((0, _helpers.convertToUnit)(this.computedTransform), ")"), left: (0, _helpers.convertToUnit)(this.computedLeft), right: (0, _helpers.convertToUnit)(this.computedRight) }); } }, watch: { canScroll: 'onScroll', invertedScroll: function invertedScroll(val) { this.isActive = !val; } }, created: function created() { if (this.invertedScroll) this.isActive = false; }, methods: { genBackground: function genBackground() { var render = _VToolbar.default.options.methods.genBackground.call(this); render.data = this._b(render.data || {}, render.tag, { style: { opacity: this.computedOpacity } }); return render; }, updateApplication: function updateApplication() { return this.invertedScroll ? 0 : this.computedHeight + this.computedTransform; }, thresholdMet: function thresholdMet() { if (this.invertedScroll) { this.isActive = this.currentScroll > this.computedScrollThreshold; return; } if (this.currentThreshold < this.computedScrollThreshold) return; if (this.hideOnScroll) { this.isActive = this.isScrollingUp; } this.savedScroll = this.currentScroll; } }, render: function render(h) { var render = _VToolbar.default.options.render.call(this, h); render.data = render.data || {}; if (this.canScroll) { render.data.directives = render.data.directives || []; render.data.directives.push({ arg: this.scrollTarget, name: 'scroll', value: this.onScroll }); } return render; } }); exports.default = _default; //# sourceMappingURL=VAppBar.js.map