{"version":3,"file":"index.mjs","sources":["../../../../components/watermark/hooks/index.ts"],"sourcesContent":["import type { ComponentPublicInstance, Ref } from 'vue';\nimport { unref, watch, getCurrentScope, onScopeDispose } from 'vue';\n\nexport const defaultWindow = typeof window !== 'undefined' ? window : undefined;\nexport interface ConfigurableWindow {\n  window?: Window;\n}\n// eslint-disable-next-line no-undef\nexport interface MutationObserverOptions extends MutationObserverInit, ConfigurableWindow {}\nexport type MaybeRef<T> = T | Ref<T>;\nexport type VueInstance = ComponentPublicInstance;\nexport type MaybeElementRef<T extends MaybeElement = MaybeElement> = MaybeRef<T>;\nexport type MaybeElement = HTMLElement | SVGElement | VueInstance | undefined | null;\nexport type UnRefElementReturn<T extends MaybeElement = MaybeElement> = T extends VueInstance\n  ? Exclude<MaybeElement, VueInstance>\n  : T | undefined;\n\nexport type Fn = () => void;\n\nexport function unrefElement<T extends MaybeElement>(elRef: MaybeElementRef<T>): UnRefElementReturn<T> {\n  const plain = unref(elRef);\n  return (plain as VueInstance)?.$el ?? plain;\n}\nexport function tryOnScopeDispose(fn: Fn) {\n  if (getCurrentScope()) {\n    onScopeDispose(fn);\n    return true;\n  }\n  return false;\n}\n\nexport function useMutationObserver(\n  target: MaybeElementRef,\n  // eslint-disable-next-line no-undef\n  callback: MutationCallback,\n  options: MutationObserverOptions = {},\n) {\n  const { window = defaultWindow, ...mutationOptions } = options;\n  let observer: MutationObserver | undefined;\n  const isSupported = window && 'MutationObserver' in window;\n\n  const cleanup = () => {\n    if (observer) {\n      observer.disconnect();\n      observer = undefined;\n    }\n  };\n\n  const stopWatch = watch(\n    () => unrefElement(target),\n    (el) => {\n      cleanup();\n\n      if (isSupported && window && el) {\n        observer = new MutationObserver(callback);\n        observer.observe(el, mutationOptions);\n      }\n    },\n    { immediate: true },\n  );\n\n  const stop = () => {\n    cleanup();\n    stopWatch();\n  };\n\n  tryOnScopeDispose(stop);\n\n  return {\n    isSupported,\n    stop,\n  };\n}\n\nexport type UseMutationObserverReturn = ReturnType<typeof useMutationObserver>;\n"],"names":["defaultWindow","window","unrefElement","elRef","_plain$$el","plain","unref","$el","tryOnScopeDispose","fn","getCurrentScope","onScopeDispose","useMutationObserver","target","callback","options","arguments","length","undefined","_options$window","mutationOptions","_excluded","observer","isSupported","cleanup","disconnect","stopWatch","watch","el","MutationObserver","observe","immediate","stop"],"mappings":";;;;;;;;;;AAGO,IAAMA,aAAgB,GAAA,OAAOC,MAAW,KAAA,WAAA,GAAcA,MAAS,GAAA,KAAA,EAAA;AAgB/D,SAASC,aAAqCC,KAAkD,EAAA;AAAA,EAAA,IAAAC,UAAA,CAAA;AAC/F,EAAA,IAAAC,KAAA,GAAQC,MAAMH,KAAK,CAAA,CAAA;AACzB,EAAA,OAAA,CAAAC,UAAA,GAAQC,kBAAAA,UAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,MAAuBE,GAAO,MAAAH,IAAAA,IAAAA,UAAA,KAAAA,KAAAA,CAAAA,GAAAA,UAAA,GAAAC,KAAA,CAAA;AACxC,CAAA;AACO,SAASG,kBAAkBC,EAAQ,EAAA;EACxC,IAAIC,iBAAmB,EAAA;IACrBC,cAAA,CAAeF,EAAE,CAAA,CAAA;AACV,IAAA,OAAA,IAAA,CAAA;AACT,GAAA;AACO,EAAA,OAAA,KAAA,CAAA;AACT,CAAA;AAEO,SAASG,mBACdA,CAAAC,MAAA,EAEAC,QACA,EACA;AAAA,EAAA,IADAC,OAAA,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAmC,EACnC,CAAA;AACA,EAAA,IAAAG,eAAA,GAAuDJ,OAAA,CAA/Cd,MAAA;AAAAA,IAAAA,OAAS,GAAAkB,eAAA,KAAAnB,KAAAA,CAAAA,GAAAA,aAAA,GAAAmB,eAAA;AAAkBC,IAAAA,2CAAoBL,OAAA,EAAAM,SAAA,CAAA,CAAA;AACnD,EAAA,IAAAC,QAAA,CAAA;AACE,EAAA,IAAAC,WAAA,GAActB,WAAU,kBAAsBA,IAAAA,OAAAA,CAAAA;AAEpD,EAAA,IAAMuB,UAAU,SAAVA,UAAgB;AACpB,IAAA,IAAIF,QAAU,EAAA;MACZA,QAAA,CAASG,UAAW,EAAA,CAAA;MACTH,QAAA,GAAA,KAAA,CAAA,CAAA;AACb,KAAA;GACF,CAAA;EAEA,IAAMI,SAAY,GAAAC,KAAA,CAChB,YAAA;IAAA,OAAMzB,aAAaW,MAAM,CAAA,CAAA;GACzB,EAAA,UAACe,EAAO,EAAA;AACEJ,IAAAA,OAAA,EAAA,CAAA;AAEJ,IAAA,IAAAD,WAAA,IAAetB,WAAU2B,EAAI,EAAA;AACpBN,MAAAA,QAAA,GAAA,IAAIO,iBAAiBf,QAAQ,CAAA,CAAA;AAC/BQ,MAAAA,QAAA,CAAAQ,OAAA,CAAQF,IAAIR,eAAe,CAAA,CAAA;AACtC,KAAA;AACF,GAAA,EACA;AAAEW,IAAAA,WAAW,IAAA;AAAK,GACpB,CAAA,CAAA;AAEA,EAAA,IAAMC,OAAO,SAAPA,OAAa;AACTR,IAAAA,OAAA,EAAA,CAAA;AACEE,IAAAA,SAAA,EAAA,CAAA;GACZ,CAAA;EAEAlB,iBAAA,CAAkBwB,IAAI,CAAA,CAAA;EAEf,OAAA;AACLT,IAAAA,WAAA,EAAAA,WAAA;AACAS,IAAAA,IAAA,EAAAA,IAAAA;GACF,CAAA;AACF;;;;"}