Addressed existing cm6 todos

- Updated clipboard handling
  - Removed old clipboard package for browser-native API.
- Updated codemirror editor events to use new props for new data types.
This commit is contained in:
Dan Brown
2023-04-14 14:08:40 +01:00
parent fdda813d5f
commit 257a703878
12 changed files with 51 additions and 93 deletions

View File

@ -1,4 +1,3 @@
import {debounce} from "../services/util";
import {Component} from "./component";
import {init as initEditor} from "../markdown/editor";
@ -45,8 +44,7 @@ export class MarkdownEditor extends Component {
window.$events.emitPublic(this.elem, 'editor-markdown::setup', {
markdownIt: this.editor.markdown.getRenderer(),
displayEl: this.display,
// TODO - change to codeMirrorView?
// codeMirrorInstance: this.editor.cm,
cmEditorView: this.editor.cm,
});
}
@ -81,12 +79,6 @@ export class MarkdownEditor extends Component {
toolbarLabel.closest('.markdown-editor-wrap').classList.add('active');
});
// Refresh CodeMirror on container resize
// TODO
// const resizeDebounced = debounce(() => this.editor.cm.refresh(), 100, false);
// const observer = new ResizeObserver(resizeDebounced);
// observer.observe(this.elem);
this.handleDividerDrag();
}
@ -104,8 +96,6 @@ export class MarkdownEditor extends Component {
window.removeEventListener('pointerup', upListener);
this.display.style.pointerEvents = null;
document.body.style.userSelect = null;
// TODO
// this.editor.cm.refresh();
};
this.display.style.pointerEvents = 'none';

View File

@ -1,12 +1,14 @@
import * as DOM from "../services/dom";
import Clipboard from "clipboard/dist/clipboard.min";
import {Component} from "./component";
import {copyTextToClipboard} from "../services/clipboard";
export class Pointer extends Component {
setup() {
this.container = this.$el;
this.input = this.$refs.input;
this.button = this.$refs.button;
this.pageId = this.$opts.pageId;
// Instance variables
@ -16,15 +18,17 @@ export class Pointer extends Component {
this.pointerSectionId = '';
this.setupListeners();
// Set up clipboard
new Clipboard(this.container.querySelector('button'));
}
setupListeners() {
// Copy on copy button click
this.button.addEventListener('click', event => {
copyTextToClipboard(this.input.value);
});
// Select all contents on input click
DOM.onChildEvent(this.container, 'input', 'click', (event, input) => {
input.select();
this.input.addEventListener('click', event => {
this.input.select();
event.stopPropagation();
});
@ -112,7 +116,7 @@ export class Pointer extends Component {
inputText = window.location.protocol + "//" + window.location.host + inputText;
}
this.container.querySelector('input').value = inputText;
this.input.value = inputText;
// Update anchor if present
const editAnchor = this.container.querySelector('#pointer-edit');