|
@@ -9,24 +9,12 @@ export function magic(name, callback) {
|
|
|
}
|
|
|
|
|
|
export function injectMagics(obj, el) {
|
|
|
- Object.entries(magics).forEach(([name, callback]) => {
|
|
|
- let memoizedUtilities = null;
|
|
|
- function getUtilities() {
|
|
|
- if (memoizedUtilities) {
|
|
|
- return memoizedUtilities;
|
|
|
- } else {
|
|
|
- let [utilities, cleanup] = getElementBoundUtilities(el)
|
|
|
-
|
|
|
- memoizedUtilities = {interceptor, ...utilities}
|
|
|
-
|
|
|
- onElRemoved(el, cleanup)
|
|
|
- return memoizedUtilities;
|
|
|
- }
|
|
|
- }
|
|
|
+ let memoizedUtilities = getUtilities(el)
|
|
|
|
|
|
+ Object.entries(magics).forEach(([name, callback]) => {
|
|
|
Object.defineProperty(obj, `$${name}`, {
|
|
|
get() {
|
|
|
- return callback(el, getUtilities());
|
|
|
+ return callback(el, memoizedUtilities);
|
|
|
},
|
|
|
enumerable: false,
|
|
|
})
|
|
@@ -34,3 +22,13 @@ export function injectMagics(obj, el) {
|
|
|
|
|
|
return obj
|
|
|
}
|
|
|
+
|
|
|
+export function getUtilities(el) {
|
|
|
+ let [utilities, cleanup] = getElementBoundUtilities(el)
|
|
|
+
|
|
|
+ let utils = { interceptor, ...utilities }
|
|
|
+
|
|
|
+ onElRemoved(el, cleanup)
|
|
|
+
|
|
|
+ return utils;
|
|
|
+}
|