Skip to content

Commit

Permalink
extract get utlilties to a function
Browse files Browse the repository at this point in the history
  • Loading branch information
AbhiShake1 committed Jun 27, 2024
1 parent 7e91ecf commit dba8b23
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 12 deletions.
15 changes: 3 additions & 12 deletions packages/alpinejs/src/magics.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
import { getElementBoundUtilities } from './directives'
import { interceptor } from './interceptor'
import { onElRemoved } from './mutation'
import { getUtilities } from "./utils/get-utlilties";

let magics = {}

Expand All @@ -9,19 +7,12 @@ export function magic(name, callback) {
}

export function injectMagics(obj, el) {
let memoizedUtilities = null;
let memoizedUtilities = getUtilities();

function getUtilities() {
let [utilities, cleanup] = getElementBoundUtilities(el)
memoizedUtilities = {interceptor, ...utilities}
onElRemoved(el, cleanup)
return memoizedUtilities;
}

Object.entries(magics).forEach(([name, callback]) => {
Object.defineProperty(obj, `$${name}`, {
get() {
return callback(el, memoizedUtilities || getUtilities());
return callback(el, memoizedUtilities);
},
enumerable: false,
})
Expand Down
12 changes: 12 additions & 0 deletions packages/alpinejs/src/utils/get-utlilties.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { getElementBoundUtilities } from "../directives";
import { interceptor } from "../interceptor";
import { onElRemoved } from "../mutation";

/// Get the utilities for a given element.
/// @param el - The element to get the utilities for.
export function getUtilities(el) {
let [utilities, cleanup] = getElementBoundUtilities(el)
const utils = { interceptor, ...utilities }
onElRemoved(el, cleanup)
return utils;
}

0 comments on commit dba8b23

Please sign in to comment.