tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 4.37 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../src/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;;;;"}