routie dev init since i didn't adhere to any proper guidance up until now
This commit is contained in:
+16
@@ -0,0 +1,16 @@
|
||||
import type { DirectiveBinding } from 'vue';
|
||||
import type { MutationOptions } from '../../composables/mutationObserver.js';
|
||||
export interface MutationDirectiveBinding extends Omit<DirectiveBinding, 'modifiers' | 'value'> {
|
||||
value: MutationCallback | {
|
||||
handler: MutationCallback;
|
||||
options?: MutationObserverInit;
|
||||
};
|
||||
modifiers: MutationOptions;
|
||||
}
|
||||
declare function mounted(el: HTMLElement, binding: MutationDirectiveBinding): void;
|
||||
declare function unmounted(el: HTMLElement, binding: MutationDirectiveBinding): void;
|
||||
export declare const Mutate: {
|
||||
mounted: typeof mounted;
|
||||
unmounted: typeof unmounted;
|
||||
};
|
||||
export default Mutate;
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
// Types
|
||||
|
||||
function mounted(el, binding) {
|
||||
const modifiers = binding.modifiers || {};
|
||||
const value = binding.value;
|
||||
const {
|
||||
once,
|
||||
immediate,
|
||||
...modifierKeys
|
||||
} = modifiers;
|
||||
const defaultValue = !Object.keys(modifierKeys).length;
|
||||
const {
|
||||
handler,
|
||||
options
|
||||
} = typeof value === 'object' ? value : {
|
||||
handler: value,
|
||||
options: {
|
||||
attributes: modifierKeys?.attr ?? defaultValue,
|
||||
characterData: modifierKeys?.char ?? defaultValue,
|
||||
childList: modifierKeys?.child ?? defaultValue,
|
||||
subtree: modifierKeys?.sub ?? defaultValue
|
||||
}
|
||||
};
|
||||
const observer = new MutationObserver((mutations = [], observer) => {
|
||||
handler?.(mutations, observer);
|
||||
if (once) unmounted(el, binding);
|
||||
});
|
||||
if (immediate) handler?.([], observer);
|
||||
el._mutate = Object(el._mutate);
|
||||
el._mutate[binding.instance.$.uid] = {
|
||||
observer
|
||||
};
|
||||
observer.observe(el, options);
|
||||
}
|
||||
function unmounted(el, binding) {
|
||||
if (!el._mutate?.[binding.instance.$.uid]) return;
|
||||
el._mutate[binding.instance.$.uid].observer.disconnect();
|
||||
delete el._mutate[binding.instance.$.uid];
|
||||
}
|
||||
export const Mutate = {
|
||||
mounted,
|
||||
unmounted
|
||||
};
|
||||
export default Mutate;
|
||||
//# sourceMappingURL=index.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.js","names":["mounted","el","binding","modifiers","value","once","immediate","modifierKeys","defaultValue","Object","keys","length","handler","options","attributes","attr","characterData","char","childList","child","subtree","sub","observer","MutationObserver","mutations","unmounted","_mutate","instance","$","uid","observe","disconnect","Mutate"],"sources":["../../../src/directives/mutate/index.ts"],"sourcesContent":["// Types\nimport type { DirectiveBinding } from 'vue'\nimport type { MutationOptions } from '@/composables/mutationObserver'\n\nexport interface MutationDirectiveBinding extends Omit<DirectiveBinding, 'modifiers' | 'value'> {\n value: MutationCallback | { handler: MutationCallback, options?: MutationObserverInit }\n modifiers: MutationOptions\n}\n\nfunction mounted (el: HTMLElement, binding: MutationDirectiveBinding) {\n const modifiers = binding.modifiers || {}\n const value = binding.value\n const { once, immediate, ...modifierKeys } = modifiers\n const defaultValue = !Object.keys(modifierKeys).length\n\n const { handler, options } = typeof value === 'object'\n ? value\n : {\n handler: value,\n options: {\n attributes: modifierKeys?.attr ?? defaultValue,\n characterData: modifierKeys?.char ?? defaultValue,\n childList: modifierKeys?.child ?? defaultValue,\n subtree: modifierKeys?.sub ?? defaultValue,\n },\n }\n\n const observer = new MutationObserver((\n mutations: MutationRecord[] = [],\n observer: MutationObserver\n ) => {\n handler?.(mutations, observer)\n\n if (once) unmounted(el, binding)\n })\n\n if (immediate) handler?.([], observer)\n\n el._mutate = Object(el._mutate)\n el._mutate![binding.instance!.$.uid] = { observer }\n\n observer.observe(el, options)\n}\n\nfunction unmounted (el: HTMLElement, binding: MutationDirectiveBinding) {\n if (!el._mutate?.[binding.instance!.$.uid]) return\n\n el._mutate[binding.instance!.$.uid]!.observer.disconnect()\n delete el._mutate[binding.instance!.$.uid]\n}\n\nexport const Mutate = {\n mounted,\n unmounted,\n}\n\nexport default Mutate\n"],"mappings":"AAAA;;AASA,SAASA,OAAOA,CAAEC,EAAe,EAAEC,OAAiC,EAAE;EACpE,MAAMC,SAAS,GAAGD,OAAO,CAACC,SAAS,IAAI,CAAC,CAAC;EACzC,MAAMC,KAAK,GAAGF,OAAO,CAACE,KAAK;EAC3B,MAAM;IAAEC,IAAI;IAAEC,SAAS;IAAE,GAAGC;EAAa,CAAC,GAAGJ,SAAS;EACtD,MAAMK,YAAY,GAAG,CAACC,MAAM,CAACC,IAAI,CAACH,YAAY,CAAC,CAACI,MAAM;EAEtD,MAAM;IAAEC,OAAO;IAAEC;EAAQ,CAAC,GAAG,OAAOT,KAAK,KAAK,QAAQ,GAClDA,KAAK,GACL;IACAQ,OAAO,EAAER,KAAK;IACdS,OAAO,EAAE;MACPC,UAAU,EAAEP,YAAY,EAAEQ,IAAI,IAAIP,YAAY;MAC9CQ,aAAa,EAAET,YAAY,EAAEU,IAAI,IAAIT,YAAY;MACjDU,SAAS,EAAEX,YAAY,EAAEY,KAAK,IAAIX,YAAY;MAC9CY,OAAO,EAAEb,YAAY,EAAEc,GAAG,IAAIb;IAChC;EACF,CAAC;EAEH,MAAMc,QAAQ,GAAG,IAAIC,gBAAgB,CAAC,CACpCC,SAA2B,GAAG,EAAE,EAChCF,QAA0B,KACvB;IACHV,OAAO,GAAGY,SAAS,EAAEF,QAAQ,CAAC;IAE9B,IAAIjB,IAAI,EAAEoB,SAAS,CAACxB,EAAE,EAAEC,OAAO,CAAC;EAClC,CAAC,CAAC;EAEF,IAAII,SAAS,EAAEM,OAAO,GAAG,EAAE,EAAEU,QAAQ,CAAC;EAEtCrB,EAAE,CAACyB,OAAO,GAAGjB,MAAM,CAACR,EAAE,CAACyB,OAAO,CAAC;EAC/BzB,EAAE,CAACyB,OAAO,CAAExB,OAAO,CAACyB,QAAQ,CAAEC,CAAC,CAACC,GAAG,CAAC,GAAG;IAAEP;EAAS,CAAC;EAEnDA,QAAQ,CAACQ,OAAO,CAAC7B,EAAE,EAAEY,OAAO,CAAC;AAC/B;AAEA,SAASY,SAASA,CAAExB,EAAe,EAAEC,OAAiC,EAAE;EACtE,IAAI,CAACD,EAAE,CAACyB,OAAO,GAAGxB,OAAO,CAACyB,QAAQ,CAAEC,CAAC,CAACC,GAAG,CAAC,EAAE;EAE5C5B,EAAE,CAACyB,OAAO,CAACxB,OAAO,CAACyB,QAAQ,CAAEC,CAAC,CAACC,GAAG,CAAC,CAAEP,QAAQ,CAACS,UAAU,CAAC,CAAC;EAC1D,OAAO9B,EAAE,CAACyB,OAAO,CAACxB,OAAO,CAACyB,QAAQ,CAAEC,CAAC,CAACC,GAAG,CAAC;AAC5C;AAEA,OAAO,MAAMG,MAAM,GAAG;EACpBhC,OAAO;EACPyB;AACF,CAAC;AAED,eAAeO,MAAM","ignoreList":[]}
|
||||
Reference in New Issue
Block a user