react-simplikit 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +40 -0
- package/dist/components/ImpressionArea/index.d.ts +46 -0
- package/dist/components/ImpressionArea/index.js +276 -0
- package/dist/components/Separated/index.d.ts +38 -0
- package/dist/components/Separated/index.js +40 -0
- package/dist/components/SwitchCase/index.d.ts +46 -0
- package/dist/components/SwitchCase/index.js +35 -0
- package/dist/hooks/useAsyncEffect/index.d.ts +25 -0
- package/dist/hooks/useAsyncEffect/index.js +43 -0
- package/dist/hooks/useBooleanState/index.d.ts +19 -0
- package/dist/hooks/useBooleanState/index.js +45 -0
- package/dist/hooks/useCallbackOncePerRender/index.d.ts +41 -0
- package/dist/hooks/useCallbackOncePerRender/index.js +59 -0
- package/dist/hooks/useDebounce/index.d.ts +48 -0
- package/dist/hooks/useDebounce/index.js +123 -0
- package/dist/hooks/useImpressionRef/index.d.ts +38 -0
- package/dist/hooks/useImpressionRef/index.js +237 -0
- package/dist/hooks/useInputState/index.d.ts +27 -0
- package/dist/hooks/useInputState/index.js +45 -0
- package/dist/hooks/useIntersectionObserver/index.d.ts +33 -0
- package/dist/hooks/useIntersectionObserver/index.js +91 -0
- package/dist/hooks/useInterval/index.d.ts +37 -0
- package/dist/hooks/useInterval/index.js +64 -0
- package/dist/hooks/useLoading/index.d.ts +37 -0
- package/dist/hooks/useLoading/index.js +61 -0
- package/dist/hooks/useOutsideClickEffect/index.d.ts +27 -0
- package/dist/hooks/useOutsideClickEffect/index.js +70 -0
- package/dist/hooks/usePreservedCallback/index.d.ts +30 -0
- package/dist/hooks/usePreservedCallback/index.js +41 -0
- package/dist/hooks/usePreservedReference/index.d.ts +42 -0
- package/dist/hooks/usePreservedReference/index.js +44 -0
- package/dist/hooks/usePrevious/index.d.ts +21 -0
- package/dist/hooks/usePrevious/index.js +47 -0
- package/dist/hooks/useRefEffect/index.d.ts +31 -0
- package/dist/hooks/useRefEffect/index.js +68 -0
- package/dist/hooks/useStorageState/index.d.ts +50 -0
- package/dist/hooks/useStorageState/index.js +168 -0
- package/dist/hooks/useThrottle/index.d.ts +47 -0
- package/dist/hooks/useThrottle/index.js +147 -0
- package/dist/hooks/useTimeout/index.d.ts +30 -0
- package/dist/hooks/useTimeout/index.js +53 -0
- package/dist/hooks/useToggle/index.d.ts +30 -0
- package/dist/hooks/useToggle/index.js +36 -0
- package/dist/hooks/useVisibilityEvent/index.d.ts +27 -0
- package/dist/hooks/useVisibilityEvent/index.js +46 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.js +761 -0
- package/dist/utils/buildContext/index.d.ts +38 -0
- package/dist/utils/buildContext/index.js +55 -0
- package/dist/utils/mergeRefs/index.d.ts +37 -0
- package/dist/utils/mergeRefs/index.js +45 -0
- package/esm/components/ImpressionArea/index.d.mts +46 -0
- package/esm/components/ImpressionArea/index.mjs +249 -0
- package/esm/components/Separated/index.d.mts +38 -0
- package/esm/components/Separated/index.mjs +13 -0
- package/esm/components/SwitchCase/index.d.mts +46 -0
- package/esm/components/SwitchCase/index.mjs +8 -0
- package/esm/hooks/useAsyncEffect/index.d.mts +25 -0
- package/esm/hooks/useAsyncEffect/index.mjs +16 -0
- package/esm/hooks/useBooleanState/index.d.mts +19 -0
- package/esm/hooks/useBooleanState/index.mjs +18 -0
- package/esm/hooks/useCallbackOncePerRender/index.d.mts +41 -0
- package/esm/hooks/useCallbackOncePerRender/index.mjs +32 -0
- package/esm/hooks/useDebounce/index.d.mts +48 -0
- package/esm/hooks/useDebounce/index.mjs +96 -0
- package/esm/hooks/useImpressionRef/index.d.mts +38 -0
- package/esm/hooks/useImpressionRef/index.mjs +210 -0
- package/esm/hooks/useInputState/index.d.mts +27 -0
- package/esm/hooks/useInputState/index.mjs +18 -0
- package/esm/hooks/useIntersectionObserver/index.d.mts +33 -0
- package/esm/hooks/useIntersectionObserver/index.mjs +64 -0
- package/esm/hooks/useInterval/index.d.mts +37 -0
- package/esm/hooks/useInterval/index.mjs +37 -0
- package/esm/hooks/useLoading/index.d.mts +37 -0
- package/esm/hooks/useLoading/index.mjs +34 -0
- package/esm/hooks/useOutsideClickEffect/index.d.mts +27 -0
- package/esm/hooks/useOutsideClickEffect/index.mjs +43 -0
- package/esm/hooks/usePreservedCallback/index.d.mts +30 -0
- package/esm/hooks/usePreservedCallback/index.mjs +14 -0
- package/esm/hooks/usePreservedReference/index.d.mts +42 -0
- package/esm/hooks/usePreservedReference/index.mjs +17 -0
- package/esm/hooks/usePrevious/index.d.mts +21 -0
- package/esm/hooks/usePrevious/index.mjs +20 -0
- package/esm/hooks/useRefEffect/index.d.mts +31 -0
- package/esm/hooks/useRefEffect/index.mjs +41 -0
- package/esm/hooks/useStorageState/index.d.mts +50 -0
- package/esm/hooks/useStorageState/index.mjs +141 -0
- package/esm/hooks/useThrottle/index.d.mts +47 -0
- package/esm/hooks/useThrottle/index.mjs +120 -0
- package/esm/hooks/useTimeout/index.d.mts +30 -0
- package/esm/hooks/useTimeout/index.mjs +26 -0
- package/esm/hooks/useToggle/index.d.mts +30 -0
- package/esm/hooks/useToggle/index.mjs +9 -0
- package/esm/hooks/useVisibilityEvent/index.d.mts +27 -0
- package/esm/hooks/useVisibilityEvent/index.mjs +19 -0
- package/esm/index.d.mts +26 -0
- package/esm/index.mjs +711 -0
- package/esm/utils/buildContext/index.d.mts +38 -0
- package/esm/utils/buildContext/index.mjs +28 -0
- package/esm/utils/mergeRefs/index.d.mts +37 -0
- package/esm/utils/mergeRefs/index.mjs +18 -0
- package/package.json +87 -7
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
|
|
4
|
+
type ProviderProps<ContextValuesType> = (ContextValuesType & {
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
}) | {
|
|
7
|
+
children: ReactNode;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* @description
|
|
11
|
+
* `buildContext` is a helper function that reduces repetitive code when defining React Context.
|
|
12
|
+
*
|
|
13
|
+
* @param contextName - The name of the context.
|
|
14
|
+
* @param defaultContextValues - The default values to be passed to the context.
|
|
15
|
+
*
|
|
16
|
+
* @returns A tuple of the form [Provider, useContext]:
|
|
17
|
+
* - `Provider`: The component that provides the context.
|
|
18
|
+
* - `useContext`: The hook that uses the context.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* const [Provider, useContext] = buildContext<{ title: string }>('TestContext', null);
|
|
22
|
+
*
|
|
23
|
+
* function Inner() {
|
|
24
|
+
* const { title } = useContext();
|
|
25
|
+
* return <div>{title}</div>;
|
|
26
|
+
* }
|
|
27
|
+
*
|
|
28
|
+
* function Page() {
|
|
29
|
+
* return (
|
|
30
|
+
* <Provider title="Hello">
|
|
31
|
+
* <Inner />
|
|
32
|
+
* </Provider>
|
|
33
|
+
* );
|
|
34
|
+
* }
|
|
35
|
+
*/
|
|
36
|
+
declare function buildContext<ContextValuesType extends object>(contextName: string, defaultContextValues?: ContextValuesType): readonly [({ children, ...contextValues }: ProviderProps<ContextValuesType>) => react_jsx_runtime.JSX.Element, () => ContextValuesType];
|
|
37
|
+
|
|
38
|
+
export { buildContext };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// src/utils/buildContext/buildContext.tsx
|
|
2
|
+
import { createContext, useContext, useMemo } from "react";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
function buildContext(contextName, defaultContextValues) {
|
|
5
|
+
const Context = createContext(defaultContextValues ?? void 0);
|
|
6
|
+
function Provider({ children, ...contextValues }) {
|
|
7
|
+
const value = useMemo(
|
|
8
|
+
() => Object.keys(contextValues).length > 0 ? contextValues : null,
|
|
9
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
10
|
+
[...Object.values(contextValues)]
|
|
11
|
+
);
|
|
12
|
+
return /* @__PURE__ */ jsx(Context.Provider, { value, children });
|
|
13
|
+
}
|
|
14
|
+
function useInnerContext() {
|
|
15
|
+
const context = useContext(Context);
|
|
16
|
+
if (context != null) {
|
|
17
|
+
return context;
|
|
18
|
+
}
|
|
19
|
+
if (defaultContextValues != null) {
|
|
20
|
+
return defaultContextValues;
|
|
21
|
+
}
|
|
22
|
+
throw new Error(`\`${contextName}Context\` must be used within \`${contextName}Provider\``);
|
|
23
|
+
}
|
|
24
|
+
return [Provider, useInnerContext];
|
|
25
|
+
}
|
|
26
|
+
export {
|
|
27
|
+
buildContext
|
|
28
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { RefObject, RefCallback } from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @description
|
|
5
|
+
* This function takes multiple refs (RefObject or RefCallback) and returns a single ref that updates all provided refs.
|
|
6
|
+
* It's useful when you need to pass multiple refs to a single element.
|
|
7
|
+
*
|
|
8
|
+
* @param refs - An array of refs to be merged. Each ref can be either a RefObject or RefCallback.
|
|
9
|
+
*
|
|
10
|
+
* @returns A single ref callback that updates all provided refs.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* forwardRef(function Component(props, parentRef) {
|
|
14
|
+
* const myRef = useRef(null);
|
|
15
|
+
*
|
|
16
|
+
* return <div ref={mergeRefs(myRef, parentRef)} />;
|
|
17
|
+
* })
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* function Component(props) {
|
|
21
|
+
* const ref = useRef(null);
|
|
22
|
+
* const [height, setHeight] = useState(0);
|
|
23
|
+
*
|
|
24
|
+
* const measuredRef = useCallback(node => {
|
|
25
|
+
* if(node == null) {
|
|
26
|
+
* return;
|
|
27
|
+
* }
|
|
28
|
+
*
|
|
29
|
+
* setHeight(node.offsetHeight);
|
|
30
|
+
* }, []);
|
|
31
|
+
*
|
|
32
|
+
* return <div ref={mergeRefs(measuredRef, ref)} />;
|
|
33
|
+
* }
|
|
34
|
+
*/
|
|
35
|
+
declare function mergeRefs<T>(...refs: Array<RefObject<T> | RefCallback<T> | null | undefined>): RefCallback<T>;
|
|
36
|
+
|
|
37
|
+
export { mergeRefs };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// src/utils/mergeRefs/mergeRefs.ts
|
|
2
|
+
function mergeRefs(...refs) {
|
|
3
|
+
return (value) => {
|
|
4
|
+
for (const ref of refs) {
|
|
5
|
+
if (ref == null) {
|
|
6
|
+
continue;
|
|
7
|
+
}
|
|
8
|
+
if (typeof ref === "function") {
|
|
9
|
+
ref(value);
|
|
10
|
+
continue;
|
|
11
|
+
}
|
|
12
|
+
ref.current = value;
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
mergeRefs
|
|
18
|
+
};
|
package/package.json
CHANGED
|
@@ -1,11 +1,91 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-simplikit",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.0.4",
|
|
4
|
+
"main": "./dist/index.js",
|
|
5
|
+
"sideEffects": false,
|
|
6
|
+
"files": [
|
|
7
|
+
"dist/**/*",
|
|
8
|
+
"esm/**/*"
|
|
9
|
+
],
|
|
6
10
|
"scripts": {
|
|
7
|
-
"
|
|
11
|
+
"docs:gen": "tsx .scripts/index.ts generate-docs",
|
|
12
|
+
"docs:dev": "vitepress dev",
|
|
13
|
+
"docs:build": "vitepress build",
|
|
14
|
+
"docs:preview": "vitepress preview",
|
|
15
|
+
"lint": "eslint src",
|
|
16
|
+
"lint:fix": "eslint src --fix",
|
|
17
|
+
"prettier:fix": "prettier --write .",
|
|
18
|
+
"test": "vitest run",
|
|
19
|
+
"test:coverage": "yarn vitest run --coverage",
|
|
20
|
+
"prepack": "tsup"
|
|
8
21
|
},
|
|
9
|
-
"
|
|
10
|
-
|
|
11
|
-
|
|
22
|
+
"publishConfig": {
|
|
23
|
+
"access": "public",
|
|
24
|
+
"main": "./dist/index.js",
|
|
25
|
+
"types": "./dist/index.d.ts",
|
|
26
|
+
"module": "./esm/index.mjs",
|
|
27
|
+
"exports": {
|
|
28
|
+
".": {
|
|
29
|
+
"types": "./dist/index.d.ts",
|
|
30
|
+
"import": "./esm/index.mjs",
|
|
31
|
+
"require": "./dist/index.js"
|
|
32
|
+
},
|
|
33
|
+
"./package.json": "./package.json"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@eslint/js": "^9.16.0",
|
|
38
|
+
"@openai/openai": "npm:@jsr/openai__openai@^4.93.0",
|
|
39
|
+
"@testing-library/dom": "^10.4.0",
|
|
40
|
+
"@testing-library/jest-dom": "^6.6.3",
|
|
41
|
+
"@testing-library/react": "^16.1.0",
|
|
42
|
+
"@trivago/prettier-plugin-sort-imports": "^5.2.0",
|
|
43
|
+
"@types/node": "^22.10.2",
|
|
44
|
+
"@types/react": "^19.0.7",
|
|
45
|
+
"@vitest/coverage-v8": "^2.1.8",
|
|
46
|
+
"commander": "^13.1.0",
|
|
47
|
+
"comment-parser": "^1.4.1",
|
|
48
|
+
"corepack": "^0.30.0",
|
|
49
|
+
"dotenv": "^16.4.7",
|
|
50
|
+
"esbuild": "^0.24.0",
|
|
51
|
+
"eslint": "^9.16.0",
|
|
52
|
+
"eslint-config-prettier": "^9.1.0",
|
|
53
|
+
"eslint-plugin-import": "^2.31.0",
|
|
54
|
+
"eslint-plugin-prettier": "^5.2.1",
|
|
55
|
+
"eslint-plugin-react": "^7.37.2",
|
|
56
|
+
"eslint-plugin-react-hooks": "^5.1.0",
|
|
57
|
+
"eslint-plugin-simple-import-sort": "^12.1.1",
|
|
58
|
+
"eslint-plugin-unused-imports": "^4.1.4",
|
|
59
|
+
"fast-glob": "^3.3.3",
|
|
60
|
+
"globals": "^15.13.0",
|
|
61
|
+
"jsdom": "^25.0.1",
|
|
62
|
+
"listr2": "^8.2.5",
|
|
63
|
+
"ora": "^8.2.0",
|
|
64
|
+
"prettier": "^3.4.2",
|
|
65
|
+
"prettier-plugin-sort-re-exports": "^0.1.0",
|
|
66
|
+
"react": "^19.0.0",
|
|
67
|
+
"react-dom": "^19.0.0",
|
|
68
|
+
"tsup": "^8.3.5",
|
|
69
|
+
"tsx": "^4.19.2",
|
|
70
|
+
"typescript": "^5.7.2",
|
|
71
|
+
"typescript-eslint": "^8.18.0",
|
|
72
|
+
"vitepress": "^1.5.0",
|
|
73
|
+
"vitest": "^2.1.8",
|
|
74
|
+
"vue": "^3.5.13"
|
|
75
|
+
},
|
|
76
|
+
"peerDependencies": {
|
|
77
|
+
"react": "*",
|
|
78
|
+
"react-dom": "*"
|
|
79
|
+
},
|
|
80
|
+
"packageManager": "yarn@4.5.3",
|
|
81
|
+
"module": "./esm/index.mjs",
|
|
82
|
+
"exports": {
|
|
83
|
+
".": {
|
|
84
|
+
"types": "./dist/index.d.ts",
|
|
85
|
+
"import": "./esm/index.mjs",
|
|
86
|
+
"require": "./dist/index.js"
|
|
87
|
+
},
|
|
88
|
+
"./package.json": "./package.json"
|
|
89
|
+
},
|
|
90
|
+
"types": "./dist/index.d.ts"
|
|
91
|
+
}
|