var t = `
` export default { props: { name: { type: String }, defaultWidth: { type: Number, default: 200 }, minWidth: { type: Number, default: 100 }, direction: { type: String, default: "right" }, }, data() { return { paneWidth: null, maxWidth: null, startResizeClientX: null, startResizePaneWidth: null, resizing: false, } }, methods: { startResize(event) { this.startResizeClientX = event.clientX; this.startResizePaneWidth = this.paneWidth; this.maxWidth = this.$el.parentElement.offsetWidth - 50; this.resizing = true; event.preventDefault(); document.addEventListener('mousemove', this.doResize); document.addEventListener('mouseup', this.stopResize); }, doResize(event) { let draggedDistance = event.clientX - this.startResizeClientX; if (this.direction === 'left') draggedDistance = -draggedDistance; const newWidth = this.startResizePaneWidth + draggedDistance; if (newWidth <= this.maxWidth && newWidth >= this.minWidth ) this.paneWidth = newWidth; }, stopResize() { this.resizing = false; this.savePreferredWidth(); document.removeEventListener('mousemove', this.doResize); document.removeEventListener('mouseup', this.stopResize); }, setDefaultWidth() { this.paneWidth = this.defaultWidth; this.savePreferredWidth() }, savePreferredWidth() { const key = `${this.name}Width`; this.$notesiumState[key] = this.paneWidth; }, loadPreferredWidth() { const key = `${this.name}Width`; this.paneWidth = parseInt(this.$notesiumState[key], 10) || this.defaultWidth; }, }, mounted() { this.loadPreferredWidth(); }, template: t }