mirror of
https://github.com/ggerganov/llama.cpp.git
synced 2024-12-26 03:14:35 +00:00
server : (UI) fix copy to clipboard function (#10916)
This commit is contained in:
parent
21ae3b9be8
commit
0ca416c91a
Binary file not shown.
@ -13,7 +13,7 @@ import hljs from './highlight-config';
|
|||||||
import daisyuiThemes from 'daisyui/src/theming/themes';
|
import daisyuiThemes from 'daisyui/src/theming/themes';
|
||||||
|
|
||||||
// ponyfill for missing ReadableStream asyncIterator on Safari
|
// ponyfill for missing ReadableStream asyncIterator on Safari
|
||||||
import { asyncIterator } from "@sec-ant/readable-stream/ponyfill/asyncIterator";
|
import { asyncIterator } from '@sec-ant/readable-stream/ponyfill/asyncIterator';
|
||||||
|
|
||||||
const isDev = import.meta.env.MODE === 'development';
|
const isDev = import.meta.env.MODE === 'development';
|
||||||
|
|
||||||
@ -22,7 +22,22 @@ const isString = (x) => !!x.toLowerCase;
|
|||||||
const isBoolean = (x) => x === true || x === false;
|
const isBoolean = (x) => x === true || x === false;
|
||||||
const isNumeric = (n) => !isString(n) && !isNaN(n) && !isBoolean(n);
|
const isNumeric = (n) => !isString(n) && !isNaN(n) && !isBoolean(n);
|
||||||
const escapeAttr = (str) => str.replace(/>/g, '>').replace(/"/g, '"');
|
const escapeAttr = (str) => str.replace(/>/g, '>').replace(/"/g, '"');
|
||||||
const copyStr = (str) => navigator.clipboard.writeText(str);
|
const copyStr = (textToCopy) => {
|
||||||
|
// Navigator clipboard api needs a secure context (https)
|
||||||
|
if (navigator.clipboard && window.isSecureContext) {
|
||||||
|
navigator.clipboard.writeText(textToCopy);
|
||||||
|
} else {
|
||||||
|
// Use the 'out of viewport hidden text area' trick
|
||||||
|
const textArea = document.createElement('textarea');
|
||||||
|
textArea.value = textToCopy;
|
||||||
|
// Move textarea out of the viewport so it's not visible
|
||||||
|
textArea.style.position = 'absolute';
|
||||||
|
textArea.style.left = '-999999px';
|
||||||
|
document.body.prepend(textArea);
|
||||||
|
textArea.select();
|
||||||
|
document.execCommand('copy');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// constants
|
// constants
|
||||||
const BASE_URL = isDev
|
const BASE_URL = isDev
|
||||||
@ -130,9 +145,9 @@ const VueMarkdown = defineComponent(
|
|||||||
};
|
};
|
||||||
window.copyStr = copyStr;
|
window.copyStr = copyStr;
|
||||||
const content = computed(() => md.value.render(props.source));
|
const content = computed(() => md.value.render(props.source));
|
||||||
return () => h("div", { innerHTML: content.value });
|
return () => h('div', { innerHTML: content.value });
|
||||||
},
|
},
|
||||||
{ props: ["source"] }
|
{ props: ['source'] }
|
||||||
);
|
);
|
||||||
|
|
||||||
// input field to be used by settings modal
|
// input field to be used by settings modal
|
||||||
|
Loading…
Reference in New Issue
Block a user