this.display = this.$refs.display;
this.input = this.$refs.input;
+ this.divider = this.$refs.divider;
+ this.displayWrap = this.$refs.displayWrap;
+
+ const settingContainer = this.$refs.settingContainer;
+ const settingInputs = settingContainer.querySelectorAll('input[type="checkbox"]');
this.editor = null;
initEditor({
displayEl: this.display,
inputEl: this.input,
drawioUrl: this.getDrawioUrl(),
+ settingInputs: Array.from(settingInputs),
text: {
serverUploadLimit: this.serverUploadLimitText,
imageUploadError: this.imageUploadErrorText,
- }
+ },
}).then(editor => {
this.editor = editor;
this.setupListeners();
const resizeDebounced = debounce(() => this.editor.cm.refresh(), 100, false);
const observer = new ResizeObserver(resizeDebounced);
observer.observe(this.elem);
+
+ this.handleDividerDrag();
+ }
+
+ handleDividerDrag() {
+ this.divider.addEventListener('pointerdown', event => {
+ const wrapRect = this.elem.getBoundingClientRect();
+ const moveListener = (event) => {
+ const xRel = event.pageX - wrapRect.left;
+ const xPct = Math.min(Math.max(20, Math.floor((xRel / wrapRect.width) * 100)), 80);
+ this.displayWrap.style.flexBasis = `${100-xPct}%`;
+ this.editor.settings.set('editorWidth', xPct);
+ };
+ const upListener = (event) => {
+ window.removeEventListener('pointermove', moveListener);
+ window.removeEventListener('pointerup', upListener);
+ this.display.style.pointerEvents = null;
+ document.body.style.userSelect = null;
+ this.editor.cm.refresh();
+ };
+
+ this.display.style.pointerEvents = 'none';
+ document.body.style.userSelect = 'none';
+ window.addEventListener('pointermove', moveListener);
+ window.addEventListener('pointerup', upListener);
+ });
+ const widthSetting = this.editor.settings.get('editorWidth');
+ if (widthSetting) {
+ this.displayWrap.style.flexBasis = `${100-widthSetting}%`;
+ }
}
scrollToTextIfNeeded() {