@qundus/qstate
Version:
your everyday state pal
1 lines • 10 kB
Source Map (JSON)
{"version":3,"sources":["../../../src/core/events/onchange.ts","../../../src/checks/is-server-side.ts","../../../src/core/events/onmount.ts"],"names":["is_server_side_default","onChangeEventSetup","func","onChangeEvent","state","_options","setup","onSet","payload","_a","serverSide","onMountEventSetup","options","_b","onMountEvent","callSetupParent","onMount","result","task","setupReturns","__spreadProps","__spreadValues"],"mappings":"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","file":"index.mjs","sourcesContent":["import { onSet } from \"nanostores\";\nimport type { IsMapStore, NanoAnyStore, NanoStoreValue } from \"../../_model\";\nimport isServerSide from \"../../checks/is-server-side\";\nimport type { AbstractEvent } from \"./_model\";\n\nexport type EventOnChangeSetupProps = EventOnChangeProps<NanoAnyStore> & {\n\t/**\n\t * some extra helpful infor for the setup\n\t */\n\tsetup: {\n\t\t/**\n\t\t * DO NOT CALL THIS, this is the internal parent function to be called from within onSet,\n\t\t * if called it will cause infinite loop and possible maximum stack\n\t\t *\n\t\t */\n\t\tparent: (props: EventOnChangeSetupProps) => void;\n\t\tstateCount: number;\n\t\tfuncCount: number;\n\t};\n};\nexport type EventOnChangeProps<S extends NanoAnyStore> = {\n\t$next: {\n\t\tabort(): void;\n\t\tchanged: IsMapStore<S> extends false ? undefined : keyof NanoStoreValue<S>;\n\t\tnewValue: NanoStoreValue<S>;\n\t\tshared: never;\n\t};\n\tprev: NanoStoreValue<S>;\n\tserverSide: boolean;\n};\n\nexport type EventOnChange<S extends NanoAnyStore> = (\n\tfunc: (props: EventOnChangeProps<S>) => void,\n) => void;\n\nexport const onChangeEventSetup = (func: (props: EventOnChangeSetupProps) => void) => {\n\tconst onChangeEventSetup = onChangeEvent;\n\t// @ts-ignore\n\tonChangeEventSetup.setup = {\n\t\tparent: func,\n\t\tstateCount: 0,\n\t\tfuncCount: 0,\n\t} as EventOnChangeSetupProps[\"setup\"];\n\treturn onChangeEventSetup;\n};\n\nexport const onChangeEvent: AbstractEvent<EventOnChange<NanoAnyStore>> = (state, _options) => {\n\tif (state == null) {\n\t\treturn state;\n\t}\n\t// Access the parent function from the outer scope\n\tconst setup = (onChangeEvent as any)?.setup as EventOnChangeSetupProps[\"setup\"];\n\n\tlet callSetupParent = false as boolean;\n\tif (setup != null) {\n\t\tsetup.stateCount++;\n\t\tcallSetupParent = setup.stateCount === 0;\n\t}\n\n\treturn function onChangeEventRoot(func) {\n\t\tif (setup != null) {\n\t\t\tsetup.funcCount++;\n\t\t}\n\n\t\tonSet(state, (payload) => {\n\t\t\tconst serverSide = isServerSide();\n\t\t\t// if (callSetupParent) {\n\t\t\t// } // TODO: just leave it for now, later make it an option\n\t\t\tsetup?.parent?.({ $next: payload as any, prev: state.get(), serverSide, setup });\n\t\t\tfunc?.({ $next: payload as any, prev: state.get(), serverSide });\n\t\t});\n\t};\n};\n","export default function () {\n\tif (typeof document === \"undefined\") {\n\t\treturn true;\n\t}\n\treturn false;\n}\n","import { onMount, task } from \"nanostores\";\nimport type { NanoAnyStore } from \"../../_model\";\nimport isServerSide from \"../../checks/is-server-side\";\nimport type { AbstractEvent } from \"./_model\";\n\nexport type EventOnMountOptions = {\n\t/**\n\t * default behavior is to return child's function return,\n\t * this overrides that and prefers setup (this) function return\n\t * @default false\n\t */\n\toverrideChildReturn?: boolean;\n\t/**\n\t * call the mount on the first state mount only and not on every state mount\n\t * @default true\n\t */\n\tfirstMountOnly?: boolean;\n};\nexport type EventOnMountSetupProps = EventOnMountProps<NanoAnyStore> & {\n\t/**\n\t * some extra helpful infor for the setup\n\t */\n\tsetup: {\n\t\t/**\n\t\t * DO NOT CALL THIS, this is the internal parent function to be called from within onSet,\n\t\t * if called it will cause infinite loop and possible maximum stack\n\t\t *\n\t\t */\n\t\treadonly parent: (\n\t\t\tprops: EventOnMountSetupProps,\n\t\t) => void | (() => void) | Promise<void | (() => void)>;\n\t\tstateCount: number;\n\t\tfuncCount: number;\n\t\treadonly options: EventOnMountOptions;\n\t\t// readonly firstMount: boolean;\n\t};\n};\nexport type EventOnMountProps<S extends NanoAnyStore> = {\n\tstate: S;\n\t// invoke: typeof invoke<S>;\n\tserverSide: boolean;\n\tshared: never;\n};\n\nexport type EventOnMount<S extends NanoAnyStore> = (\n\tfunc: (props: EventOnMountProps<S>) => void | (() => void) | Promise<void | (() => void)>,\n) => void;\n\nexport const onMountEventSetup = (\n\tfunc: (props: EventOnMountSetupProps) => void,\n\toptions?: EventOnMountOptions,\n) => {\n\tconst onMountEventSetup = onMountEvent;\n\t// @ts-ignore\n\tonMountEventSetup.setup = {\n\t\tparent: func,\n\t\tstateCount: 0,\n\t\tfuncCount: 0,\n\t\toptions: {\n\t\t\toverrideChildReturn: options?.overrideChildReturn ?? false,\n\t\t\tfirstMountOnly: options?.firstMountOnly ?? true,\n\t\t},\n\t} as EventOnMountSetupProps[\"setup\"];\n\treturn onMountEventSetup;\n};\n\nexport const onMountEvent: AbstractEvent<EventOnMount<NanoAnyStore>> = (state) => {\n\tif (state == null) {\n\t\treturn state;\n\t}\n\t// Access the parent function from the outer scope (closures BABYY)\n\tconst setup = (onMountEvent as any)?.setup as EventOnMountSetupProps[\"setup\"];\n\tlet callSetupParent = false as boolean;\n\tif (setup != null) {\n\t\tsetup.stateCount++;\n\t\tcallSetupParent = setup.options?.firstMountOnly === true ? setup.stateCount === 0 : true;\n\t}\n\treturn function onMountEventRoot(func) {\n\t\tif (setup != null) {\n\t\t\tsetup.funcCount++;\n\t\t}\n\n\t\tonMount(state, (payload) => {\n\t\t\tconst serverSide = isServerSide();\n\t\t\tconst result = task(async () => {\n\t\t\t\tif (callSetupParent) {\n\t\t\t\t\tlet setupReturns = null as any;\n\t\t\t\t\tsetupReturns = await setup?.parent?.({\n\t\t\t\t\t\t...payload,\n\t\t\t\t\t\tserverSide,\n\t\t\t\t\t\tstate: state as any,\n\t\t\t\t\t\tsetup,\n\t\t\t\t\t});\n\t\t\t\t\tif (setup.options.overrideChildReturn) {\n\t\t\t\t\t\treturn setupReturns;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn await func?.({\n\t\t\t\t\t...payload,\n\t\t\t\t\tserverSide,\n\t\t\t\t\tstate: state as any,\n\t\t\t\t\t// invoke,\n\t\t\t\t});\n\t\t\t});\n\t\t\treturn async () => {\n\t\t\t\tif (result == null) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tif (typeof result === \"function\") {\n\t\t\t\t\treturn await (result as any)?.();\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t};\n\t\t});\n\t};\n};\n"]}