UNPKG

tdesign-mobile-vue

Version:
1 lines 4.57 kB
{"version":3,"file":"useMutationObservable.mjs","sources":["../../src/hooks/useMutationObservable.ts"],"sourcesContent":["import { onBeforeUnmount, onMounted, ref, watch } from 'vue';\nimport { debounce, isEqual } from 'lodash-es';\n\nexport interface MutationCallback {\n (mutations: MutationRecord[]): void;\n}\n\ninterface Options {\n debounceTime?: number;\n config?: {\n attributeFilter?: string[];\n attributeOldValue?: boolean;\n attributes?: boolean;\n characterData?: boolean;\n characterDataOldValue?: boolean;\n childList?: boolean;\n subtree?: boolean;\n };\n}\n\nconst DEFAULT_OPTIONS: Options = {\n debounceTime: 0,\n config: {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n },\n};\n\n/**\n * useMutationObservable\n * @param targetEl 监听对象\n * @param callback 回调方法\n * @param options 配置项\n */\nexport function useMutationObservable(\n targetEl: HTMLElement | null,\n callback: MutationCallback,\n options: Options = DEFAULT_OPTIONS,\n) {\n const mergedOptions = ref<Options>({ ...DEFAULT_OPTIONS, ...options });\n let observer: MutationObserver | null = null;\n\n const initObserver = () => {\n if (!targetEl) return;\n\n const { debounceTime = 0, config = DEFAULT_OPTIONS.config } = mergedOptions.value;\n const handler: MutationCallback = (...args) => {\n callback?.(...args);\n };\n\n observer?.disconnect();\n observer = new MutationObserver(debounceTime > 0 ? debounce(handler, debounceTime) : handler);\n observer.observe(targetEl, config);\n };\n\n watch(\n () => options,\n (newOptions) => {\n if (!isEqual(newOptions, mergedOptions.value)) {\n mergedOptions.value = { ...DEFAULT_OPTIONS, ...newOptions };\n initObserver();\n }\n },\n { deep: true },\n );\n\n onMounted(initObserver);\n onBeforeUnmount(() => observer?.disconnect());\n}\n\nexport default useMutationObservable;\n"],"names":["DEFAULT_OPTIONS","debounceTime","config","attributes","childList","characterData","subtree","useMutationObservable","targetEl","callback","options","arguments","length","undefined","mergedOptions","ref","_objectSpread","observer","initObserver","_observer","_mergedOptions$value","value","_mergedOptions$value$","_mergedOptions$value$2","handler","_len","args","Array","_key","apply","disconnect","MutationObserver","debounce","observe","watch","newOptions","isEqual","deep","onMounted","onBeforeUnmount","_observer2"],"mappings":"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"}