{"version":3,"file":"useCopyToClipboard2.mjs","sources":["../../../../../../packages/hooks/web/useCopyToClipboard.ts"],"sourcesContent":["import { ref, watch } from 'vue'\nimport { isDef } from '@tav-ui/utils/is'\n\ninterface Options {\n  target?: HTMLElement\n}\nexport function useCopyToClipboard(initial?: string) {\n  const clipboardRef = ref(initial || '')\n  const isSuccessRef = ref(false)\n  const copiedRef = ref(false)\n\n  watch(\n    clipboardRef,\n    (str?: string) => {\n      if (isDef(str)) {\n        copiedRef.value = true\n        isSuccessRef.value = copyTextToClipboard(str)\n      }\n    },\n    { immediate: !!initial, flush: 'sync' }\n  )\n\n  return { clipboardRef, isSuccessRef, copiedRef }\n}\n\nexport function copyTextToClipboard(input: string, { target = document.body }: Options = {}) {\n  const element = document.createElement('textarea')\n  const previouslyFocusedElement = document.activeElement\n\n  element.value = input\n\n  element.setAttribute('readonly', '')\n  ;(element.style as any).contain = 'strict'\n  element.style.position = 'absolute'\n  element.style.left = '-9999px'\n  element.style.fontSize = '12pt'\n\n  const selection = document.getSelection()\n  let originalRange\n  if (selection && selection.rangeCount > 0) originalRange = selection.getRangeAt(0)\n\n  target.append(element)\n  element.select()\n\n  element.selectionStart = 0\n  element.selectionEnd = input.length\n\n  let isSuccess = false\n  try {\n    isSuccess = document.execCommand('copy')\n  } catch (e: any) {\n    throw new Error(e)\n  }\n\n  element.remove()\n\n  if (originalRange && selection) {\n    selection.removeAllRanges()\n    selection.addRange(originalRange)\n  }\n\n  if (previouslyFocusedElement) (previouslyFocusedElement as HTMLElement).focus()\n\n  return isSuccess\n}\n"],"names":[],"mappings":";;;AAEO,SAAS,kBAAkB,CAAC,OAAO,EAAE;AAC5C,EAAE,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;AAC1C,EAAE,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;AAClC,EAAE,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;AAC/B,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,GAAG,KAAK;AAC/B,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;AACpB,MAAM,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;AAC7B,MAAM,YAAY,CAAC,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;AACpD,KAAK;AACL,GAAG,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;AAC9C,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;AACnD,CAAC;AACM,SAAS,mBAAmB,CAAC,KAAK,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;AAC5E,EAAE,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACrD,EAAE,MAAM,wBAAwB,GAAG,QAAQ,CAAC,aAAa,CAAC;AAC1D,EAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;AACxB,EAAE,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACvC,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;AACnC,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;AACtC,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;AACjC,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;AAClC,EAAE,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;AAC5C,EAAE,IAAI,aAAa,CAAC;AACpB,EAAE,IAAI,SAAS,IAAI,SAAS,CAAC,UAAU,GAAG,CAAC;AAC3C,IAAI,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC5C,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACzB,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;AACnB,EAAE,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC;AAC7B,EAAE,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC;AACtC,EAAE,IAAI,SAAS,GAAG,KAAK,CAAC;AACxB,EAAE,IAAI;AACN,IAAI,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC7C,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AACvB,GAAG;AACH,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;AACnB,EAAE,IAAI,aAAa,IAAI,SAAS,EAAE;AAClC,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;AAChC,IAAI,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACtC,GAAG;AACH,EAAE,IAAI,wBAAwB;AAC9B,IAAI,wBAAwB,CAAC,KAAK,EAAE,CAAC;AACrC,EAAE,OAAO,SAAS,CAAC;AACnB;;;;"}