@jelper/context-composer 1.1.2 → 1.2.0

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/es/index.js CHANGED
@@ -1,25 +1,27 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
1
2
  import React, { memo } from 'react';
2
- export const createCtxComposer = (useCfgHook) => {
3
+ export const createCtxComposer = (useCfgHook, opts = {}) => {
4
+ const { builder } = opts;
3
5
  const ComposerCtx = React.createContext({});
6
+ const useComposerCtx = () => {
7
+ return React.useContext(ComposerCtx);
8
+ };
9
+ const buildHooks = (cb) => {
10
+ return (...p) => {
11
+ const value = React.useContext(ComposerCtx);
12
+ return cb(value)(...p);
13
+ };
14
+ };
4
15
  return {
5
- forwardComposer: (Com, propsAreEqual) => {
16
+ forwardComposer(Com, propsAreEqual) {
6
17
  const MemoCom = memo(Com, propsAreEqual);
7
18
  return (props) => {
8
19
  const value = useCfgHook(props);
9
- return (React.createElement(ComposerCtx.Provider, { value: value },
10
- React.createElement(MemoCom, Object.assign({}, props))));
11
- };
12
- },
13
- useComposerCtx() {
14
- return React.useContext(ComposerCtx);
15
- },
16
- buildHooks(cb) {
17
- return (...p) => {
18
- const value = React.useContext(ComposerCtx);
19
- return cb(value)(...p);
20
+ return (_jsx(ComposerCtx.Provider, { value: value, children: builder ? builder(props, MemoCom) : _jsx(MemoCom, Object.assign({}, props)) }));
20
21
  };
21
22
  },
22
- ComposerCtx,
23
+ useComposerCtx,
24
+ buildHooks,
23
25
  };
24
26
  };
25
27
  export const mergeComposer = (list) => {
@@ -27,7 +29,7 @@ export const mergeComposer = (list) => {
27
29
  return list.reduce((res, it) => {
28
30
  return (props) => {
29
31
  const CurrCom = it(res);
30
- return React.createElement(CurrCom, Object.assign({}, props));
32
+ return _jsx(CurrCom, Object.assign({}, props));
31
33
  };
32
34
  }, Com);
33
35
  };
package/lib/index.js CHANGED
@@ -35,32 +35,35 @@ var __importStar = (this && this.__importStar) || function (mod) {
35
35
  };
36
36
  Object.defineProperty(exports, "__esModule", { value: true });
37
37
  exports.mergeComposer = exports.createCtxComposer = void 0;
38
+ var jsx_runtime_1 = require("react/jsx-runtime");
38
39
  var react_1 = __importStar(require("react"));
39
- var createCtxComposer = function (useCfgHook) {
40
+ var createCtxComposer = function (useCfgHook, opts) {
41
+ if (opts === void 0) { opts = {}; }
42
+ var builder = opts.builder;
40
43
  var ComposerCtx = react_1.default.createContext({});
44
+ var useComposerCtx = function () {
45
+ return react_1.default.useContext(ComposerCtx);
46
+ };
47
+ var buildHooks = function (cb) {
48
+ return function () {
49
+ var p = [];
50
+ for (var _i = 0; _i < arguments.length; _i++) {
51
+ p[_i] = arguments[_i];
52
+ }
53
+ var value = react_1.default.useContext(ComposerCtx);
54
+ return cb(value).apply(void 0, p);
55
+ };
56
+ };
41
57
  return {
42
58
  forwardComposer: function (Com, propsAreEqual) {
43
59
  var MemoCom = (0, react_1.memo)(Com, propsAreEqual);
44
60
  return function (props) {
45
61
  var value = useCfgHook(props);
46
- return (react_1.default.createElement(ComposerCtx.Provider, { value: value },
47
- react_1.default.createElement(MemoCom, __assign({}, props))));
48
- };
49
- },
50
- useComposerCtx: function () {
51
- return react_1.default.useContext(ComposerCtx);
52
- },
53
- buildHooks: function (cb) {
54
- return function () {
55
- var p = [];
56
- for (var _i = 0; _i < arguments.length; _i++) {
57
- p[_i] = arguments[_i];
58
- }
59
- var value = react_1.default.useContext(ComposerCtx);
60
- return cb(value).apply(void 0, p);
62
+ return ((0, jsx_runtime_1.jsx)(ComposerCtx.Provider, { value: value, children: builder ? builder(props, MemoCom) : (0, jsx_runtime_1.jsx)(MemoCom, __assign({}, props)) }));
61
63
  };
62
64
  },
63
- ComposerCtx: ComposerCtx,
65
+ useComposerCtx: useComposerCtx,
66
+ buildHooks: buildHooks,
64
67
  };
65
68
  };
66
69
  exports.createCtxComposer = createCtxComposer;
@@ -69,7 +72,7 @@ var mergeComposer = function (list) {
69
72
  return list.reduce(function (res, it) {
70
73
  return function (props) {
71
74
  var CurrCom = it(res);
72
- return react_1.default.createElement(CurrCom, __assign({}, props));
75
+ return (0, jsx_runtime_1.jsx)(CurrCom, __assign({}, props));
73
76
  };
74
77
  }, Com);
75
78
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jelper/context-composer",
3
- "version": "1.1.2",
3
+ "version": "1.2.0",
4
4
  "description": "react context helper",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -27,15 +27,19 @@
27
27
  "access": "public"
28
28
  },
29
29
  "devDependencies": {
30
- "react": "~18.2.0",
31
30
  "@jelper/builder": "workspace:*",
32
- "@types/node": "~18.0.0",
33
- "@types/react": "~18.2.17"
31
+ "react": "~19.x.x",
32
+ "react-dom": "~19.x.x",
33
+ "typescript": "~5.9.3",
34
+ "@types/node": "~22.0.0",
35
+ "@types/react": "~19.x.x",
36
+ "@types/react-dom": "~19.x.x"
34
37
  },
35
38
  "dependencies": {
36
39
  },
37
40
  "peerDependencies": {
38
- "react": ">=18.0.0"
41
+ "react": ">=19.0.0",
42
+ "react-dom": ">=19.0.0"
39
43
  },
40
44
  "author": "apathyjade@outlook.com",
41
45
  "license": "ISC",
package/types/index.d.ts CHANGED
@@ -1,10 +1,12 @@
1
- import React, { FC } from 'react';
2
- type Composer<P> = (Com: FC<P>) => FC<P>;
3
- export declare const createCtxComposer: <P extends React.JSX.IntrinsicAttributes, T>(useCfgHook: (props: P) => T) => {
4
- forwardComposer: (Com: FC<P>) => FC<P>;
5
- useComposerCtx: () => T;
6
- buildHooks: <F extends (...arg: any) => any>(cb: (value: T) => F) => (...p: Parameters<F>) => ReturnType<F>;
7
- ComposerCtx: React.Context<T>;
1
+ import { type FC, type JSX } from 'react';
2
+ type Composer<P extends {}> = (Com: FC<P>) => FC<P>;
3
+ interface Opts<P extends {}> {
4
+ builder?: <T extends {} = P>(props: P, Com: FC<T>) => JSX.Element;
5
+ }
6
+ export declare const createCtxComposer: <P extends {}, T>(useCfgHook: (props: P) => T, opts?: Opts<P>) => {
7
+ readonly forwardComposer: <U extends {} = P>(Com: FC<U>, propsAreEqual?: (prevProps: Readonly<U>, nextProps: Readonly<U>) => boolean) => (props: P) => import("react/jsx-runtime").JSX.Element;
8
+ readonly useComposerCtx: () => T;
9
+ readonly buildHooks: <F extends (...arg: any) => any>(cb: (value: T) => F) => (...p: Parameters<F>) => ReturnType<F>;
8
10
  };
9
- export declare const mergeComposer: <P extends React.JSX.IntrinsicAttributes>(list: Array<Composer<P>>) => Composer<P>;
11
+ export declare const mergeComposer: <P extends {}>(list: Array<Composer<P>>) => Composer<P>;
10
12
  export default createCtxComposer;