44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
// Types
|
|
|
|
function mounted(el, binding) {
|
|
const {
|
|
self = false
|
|
} = binding.modifiers ?? {};
|
|
const value = binding.value;
|
|
const options = typeof value === 'object' && value.options || {
|
|
passive: true
|
|
};
|
|
const handler = typeof value === 'function' || 'handleEvent' in value ? value : value.handler;
|
|
const target = self ? el : binding.arg ? document.querySelector(binding.arg) : window;
|
|
if (!target) return;
|
|
target.addEventListener('scroll', handler, options);
|
|
el._onScroll = Object(el._onScroll);
|
|
el._onScroll[binding.instance.$.uid] = {
|
|
handler,
|
|
options,
|
|
// Don't reference self
|
|
target: self ? undefined : target
|
|
};
|
|
}
|
|
function unmounted(el, binding) {
|
|
if (!el._onScroll?.[binding.instance.$.uid]) return;
|
|
const {
|
|
handler,
|
|
options,
|
|
target = el
|
|
} = el._onScroll[binding.instance.$.uid];
|
|
target.removeEventListener('scroll', handler, options);
|
|
delete el._onScroll[binding.instance.$.uid];
|
|
}
|
|
function updated(el, binding) {
|
|
if (binding.value === binding.oldValue) return;
|
|
unmounted(el, binding);
|
|
mounted(el, binding);
|
|
}
|
|
export const Scroll = {
|
|
mounted,
|
|
unmounted,
|
|
updated
|
|
};
|
|
export default Scroll;
|
|
//# sourceMappingURL=index.mjs.map
|