function getSearchParams(val, url) { const defaultUrl = typeof window !== "undefined" ? window.location.href : ""; const finalUrl = url || defaultUrl || ""; const searchParams = finalUrl.split("?")?.[1] || ""; const params = new URLSearchParams(searchParams); return params.get(val) || ""; } function addSearchParams(urlLike, searchParams) { const [urlBase = "", urlSearch = ""] = urlLike.split("?"); const params = new URLSearchParams(urlSearch); Object.keys(searchParams).forEach((key) => { params.set(key, searchParams[key]); }); const urlSearchParams = params.toString(); if (!urlSearchParams) return urlBase; return `${urlBase}?${urlSearchParams}`; } function removeSearchParams(urlLike, searchParamKeys) { const [urlBase = "", urlSearch = ""] = urlLike.split("?"); const params = new URLSearchParams(urlSearch); searchParamKeys.forEach((key) => { params.delete(key); }); const urlSearchParams = params.toString(); if (!urlSearchParams) return urlBase; return `${urlBase}?${urlSearchParams}`; } function unsecuredCopyToClipboard(text) { const textArea = document.createElement("textarea"); textArea.value = text; Object.assign(textArea.style, { position: "fixed", right: "0", bottom: "0", opacity: "0", width: "0", height: "0", pointerEvents: "none" }); document.body.appendChild(textArea); textArea.focus(); textArea.select(); try { document.execCommand("copy"); } catch (err) { throw new Error(`Unable to copy to clipboard${err}`); } document.body.removeChild(textArea); } async function copyToClipboard(content) { if (window.isSecureContext && navigator.clipboard) await navigator.clipboard.writeText(content); else unsecuredCopyToClipboard(content); } export { addSearchParams, copyToClipboard, getSearchParams, removeSearchParams, unsecuredCopyToClipboard };