index.mjs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // Types
  2. function mounted(el, binding) {
  3. const modifiers = binding.modifiers || {};
  4. const value = binding.value;
  5. const {
  6. once,
  7. immediate,
  8. ...modifierKeys
  9. } = modifiers;
  10. const defaultValue = !Object.keys(modifierKeys).length;
  11. const {
  12. handler,
  13. options
  14. } = typeof value === 'object' ? value : {
  15. handler: value,
  16. options: {
  17. attributes: modifierKeys?.attr ?? defaultValue,
  18. characterData: modifierKeys?.char ?? defaultValue,
  19. childList: modifierKeys?.child ?? defaultValue,
  20. subtree: modifierKeys?.sub ?? defaultValue
  21. }
  22. };
  23. const observer = new MutationObserver(function () {
  24. let mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
  25. let observer = arguments.length > 1 ? arguments[1] : undefined;
  26. handler?.(mutations, observer);
  27. if (once) unmounted(el, binding);
  28. });
  29. if (immediate) handler?.([], observer);
  30. el._mutate = Object(el._mutate);
  31. el._mutate[binding.instance.$.uid] = {
  32. observer
  33. };
  34. observer.observe(el, options);
  35. }
  36. function unmounted(el, binding) {
  37. if (!el._mutate?.[binding.instance.$.uid]) return;
  38. el._mutate[binding.instance.$.uid].observer.disconnect();
  39. delete el._mutate[binding.instance.$.uid];
  40. }
  41. export const Mutate = {
  42. mounted,
  43. unmounted
  44. };
  45. export default Mutate;
  46. //# sourceMappingURL=index.mjs.map