Skip to content

Instantly share code, notes, and snippets.

View el-buku's full-sized avatar
🔮
Focusing

el-buku

🔮
Focusing
View GitHub Profile
import {
atom,
api,
injectPromise,
injectEffect,
injectSelf,
injectRef,
injectAtomValue,
injectAtomInstance,
injectSignal,
@el-buku
el-buku / throttle-debounce.ts
Last active May 4, 2025 00:03
throttle debounce atoms
import { api, atom, injectSignal } from "@zedux/react";
export const debounceAtom = atom(
"debounce",
({ id, debounceTime = 1000 }: { id: string; debounceTime?: number }) => {
const debounceId = injectSignal(id);
const timeoutId = injectSignal<NodeJS.Timeout | null>(null);
return api(debounceId).setExports({
debounce: (cb: () => void) => {
export const availableSourcesAtom = atom("available-sources", () => {
const ecosystem = injectEcosystem();
const transformItemToSignal = (item: SourceItem<TUnknownMeta>) => {
return ecosystem.signal(item);
};
const callersSignal = injectMappedSignal(
constructKeyedObjectFromArray(callersData, transformItemToSignal), // transforms array in <Record<string, Signal<{Events: EventMap, State: T>}>>>
);
@el-buku
el-buku / gist:1f2d8aa06facb696a4e2e886a61588e1
Created April 29, 2025 16:46
bad mapped signal events sender
export const availableSourcesAtom = atom("available-sources", () => {
const signalItemEventsMap = {
create: console.log,
update: console.log,
destroy: console.log,
};
const ecosystem = injectEcosystem();
const transformItemToSignal = (item: SourceItem<TUnknownMeta>) => {
export const createListContentAtom = atom(
"create-list-content",
(_id: string) => {
const viewSignal = injectAtomValue(createListViewAtom, [_id]);
const title = injectMemo(() => {
if (viewSignal === "financial-metrics") {
return "Financial Metrics";
}
if (viewSignal === "tax-and-limits") {