Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
53 lines
1.3 KiB
Plaintext
53 lines
1.3 KiB
Plaintext
import { isClipboardDataValid } from './isClipboardDataValid.js';
|
|
const localStorageClipboardKey = '_payloadClipboard';
|
|
/**
|
|
* @note This function doesn't use the Clipboard API, but localStorage. See rationale in #11513
|
|
*/
|
|
export function clipboardCopy(args) {
|
|
const {
|
|
getDataToCopy,
|
|
t,
|
|
...rest
|
|
} = args;
|
|
const dataToWrite = {
|
|
data: getDataToCopy(),
|
|
...rest
|
|
};
|
|
try {
|
|
localStorage.setItem(localStorageClipboardKey, JSON.stringify(dataToWrite));
|
|
return true;
|
|
} catch (_err) {
|
|
return t('error:unableToCopy');
|
|
}
|
|
}
|
|
/**
|
|
* @note This function doesn't use the Clipboard API, but localStorage. See rationale in #11513
|
|
*/
|
|
export function clipboardPaste({
|
|
onPaste,
|
|
path: fieldPath,
|
|
t,
|
|
...args
|
|
}) {
|
|
let dataToPaste;
|
|
try {
|
|
const jsonFromClipboard = localStorage.getItem(localStorageClipboardKey);
|
|
if (!jsonFromClipboard) {
|
|
return t('error:invalidClipboardData');
|
|
}
|
|
dataToPaste = JSON.parse(jsonFromClipboard);
|
|
} catch (_err) {
|
|
return t('error:invalidClipboardData');
|
|
}
|
|
const dataToValidate = {
|
|
...dataToPaste,
|
|
...args,
|
|
fieldPath
|
|
};
|
|
if (!isClipboardDataValid(dataToValidate)) {
|
|
return t('error:invalidClipboardData');
|
|
}
|
|
onPaste(dataToPaste);
|
|
return true;
|
|
}
|
|
//# sourceMappingURL=clipboardUtilities.js.map |