import { factory as PositionableFactory } from '../positionable'; // Util import mixins from '../../util/mixins'; export default function applicationable(value, events = []) { /* @vue/component */ return mixins(PositionableFactory(['absolute', 'fixed'])).extend({ name: 'applicationable', props: { app: Boolean }, computed: { applicationProperty() { return value; } }, watch: { // If previous value was app // reset the provided prop app(x, prev) { prev ? this.removeApplication(true) : this.callUpdate(); }, applicationProperty(newVal, oldVal) { this.$vuetify.application.unregister(this._uid, oldVal); } }, activated() { this.callUpdate(); }, created() { for (let i = 0, length = events.length; i < length; i++) { this.$watch(events[i], this.callUpdate); } this.callUpdate(); }, mounted() { this.callUpdate(); }, deactivated() { this.removeApplication(); }, destroyed() { this.removeApplication(); }, methods: { callUpdate() { if (!this.app) return; this.$vuetify.application.register(this._uid, this.applicationProperty, this.updateApplication()); }, removeApplication(force = false) { if (!force && !this.app) return; this.$vuetify.application.unregister(this._uid, this.applicationProperty); }, updateApplication: () => 0 } }); } //# sourceMappingURL=index.js.map