Packages
corex
0.1.1
0.1.2
0.1.1
0.1.0
0.1.0-rc.1
0.1.0-rc.0
0.1.0-beta.5
0.1.0-beta.4
0.1.0-beta.3
0.1.0-beta.2
0.1.0-beta.1
0.1.0-alpha.33
0.1.0-alpha.32
0.1.0-alpha.31
0.1.0-alpha.30
0.1.0-alpha.29
0.1.0-alpha.28
0.1.0-alpha.27
0.1.0-alpha.26
0.1.0-alpha.25
0.1.0-alpha.24
0.1.0-alpha.23
0.1.0-alpha.22
0.1.0-alpha.21
0.1.0-alpha.20
0.1.0-alpha.19
0.1.0-alpha.18
0.1.0-alpha.17
0.1.0-alpha.16
0.1.0-alpha.15
0.1.0-alpha.14
0.1.0-alpha.13
0.1.0-alpha.12
0.1.0-alpha.11
0.1.0-alpha.10
0.1.0-alpha.9
0.1.0-alpha.8
0.1.0-alpha.7
0.1.0-alpha.6
0.1.0-alpha.5
0.1.0-alpha.4
0.1.0-alpha.3
0.1.0-alpha.2
0.1.0-alpha.1
Accessible and unstyled UI components library written in Elixir and TypeScript that integrates Zag.js state machines into the Phoenix Framework.
Current section
Files
Jump to
Current section
Files
priv/static/hooks.mjs
// hooks/lazy-hook.ts
function createLazyHook(importFn, exportName) {
return {
async mounted() {
const el = this.el;
try {
const mod = await importFn();
const real = mod[exportName];
this._realHook = real;
if (real?.mounted) {
await real.mounted.call(this);
}
} finally {
el.removeAttribute("data-loading");
}
},
updated() {
this._realHook?.updated?.call(this);
},
destroyed() {
this._realHook?.destroyed?.call(this);
},
disconnected() {
this._realHook?.disconnected?.call(this);
},
reconnected() {
this._realHook?.reconnected?.call(this);
},
beforeUpdate() {
this._realHook?.beforeUpdate?.call(this);
}
};
}
// hooks/hooks.ts
function everyEntryIsLazyFactory(named) {
const values = Object.values(named);
return values.length > 0 && values.every((v) => typeof v === "function");
}
function hooks(named) {
const record = named;
if (everyEntryIsLazyFactory(record)) {
return Object.fromEntries(
Object.keys(record).map((name) => [
name,
createLazyHook(record[name], name)
])
);
}
return named;
}
export {
hooks
};
//# sourceMappingURL=hooks.mjs.map