12345678910111213141516171819202122232425 |
- import katexReplaceWithTex from './katex2tex';
- // Global copy handler to modify behavior on .katex elements.
- document.addEventListener('copy', function(event) {
- const selection = window.getSelection();
- if (selection.isCollapsed) {
- return; // default action OK if selection is empty
- }
- const fragment = selection.getRangeAt(0).cloneContents();
- if (!fragment.querySelector('.katex-mathml')) {
- return; // default action OK if no .katex-mathml elements
- }
- // Preserve usual HTML copy/paste behavior.
- const html = [];
- for (let i = 0; i < fragment.childNodes.length; i++) {
- html.push(fragment.childNodes[i].outerHTML);
- }
- event.clipboardData.setData('text/html', html.join(''));
- // Rewrite plain-text version.
- event.clipboardData.setData('text/plain',
- katexReplaceWithTex(fragment).textContent);
- // Prevent normal copy handling.
- event.preventDefault();
- });
|