react-obsidian 0.0.27 → 0.0.28
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/dist/src/injectors/components/ComponentInjector.d.ts.map +1 -1
- package/dist/src/injectors/components/ComponentInjector.js +7 -38
- package/dist/src/injectors/components/ComponentInjector.js.map +1 -1
- package/dist/src/utils/React.d.ts +2 -1
- package/dist/src/utils/React.d.ts.map +1 -1
- package/dist/src/utils/React.js +9 -1
- package/dist/src/utils/React.js.map +1 -1
- package/package.json +1 -1
- package/src/injectors/components/ComponentInjector.tsx +9 -16
- package/src/utils/React.ts +8 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentInjector.d.ts","sourceRoot":"","sources":["../../../../src/injectors/components/ComponentInjector.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ComponentInjector.d.ts","sourceRoot":"","sources":["../../../../src/injectors/components/ComponentInjector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGtD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,CAAC,OAAO,OAAO,iBAAiB;IACpC,MAAM,CAAC,CAAC,EACN,MAAM,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAClC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,GAChC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAMtC,OAAO,CAAC,aAAa;CAetB"}
|
|
@@ -1,32 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
4
|
};
|
|
28
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
var react_1 =
|
|
6
|
+
var react_1 = __importDefault(require("react"));
|
|
30
7
|
var hoist_non_react_statics_1 = __importDefault(require("hoist-non-react-statics"));
|
|
31
8
|
var PropsInjector_1 = __importDefault(require("./PropsInjector"));
|
|
32
9
|
var useGraph_1 = __importDefault(require("./useGraph"));
|
|
@@ -40,22 +17,14 @@ var ComponentInjector = /** @class */ (function () {
|
|
|
40
17
|
return Wrapped;
|
|
41
18
|
};
|
|
42
19
|
ComponentInjector.prototype.wrapComponent = function (InjectionCandidate, Graph) {
|
|
43
|
-
|
|
20
|
+
var isMemoized = (0, React_1.isMemoizedComponent)(InjectionCandidate);
|
|
21
|
+
var Target = isMemoized ? InjectionCandidate.type : InjectionCandidate;
|
|
22
|
+
var compare = isMemoized ? InjectionCandidate.compare : undefined;
|
|
23
|
+
return (0, React_1.genericMemo)(function (passedProps) {
|
|
44
24
|
var graph = (0, useGraph_1.default)(Graph, passedProps);
|
|
45
|
-
var
|
|
46
|
-
(0, react_1.useEffect)(function () {
|
|
47
|
-
if ((0, React_1.isMemoizedComponent)(InjectionCandidate) && InjectionCandidate.compare) {
|
|
48
|
-
if (!InjectionCandidate.compare(proxiedProps, passedProps)) {
|
|
49
|
-
setProxiedProps(new PropsInjector_1.default(graph).inject(passedProps));
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
setProxiedProps(new PropsInjector_1.default(graph).inject(passedProps));
|
|
54
|
-
}
|
|
55
|
-
}, [passedProps]);
|
|
56
|
-
var Target = (0, React_1.isMemoizedComponent)(InjectionCandidate) ? InjectionCandidate.type : InjectionCandidate;
|
|
25
|
+
var proxiedProps = new PropsInjector_1.default(graph).inject(passedProps);
|
|
57
26
|
return react_1.default.createElement(react_1.default.Fragment, null, Target(proxiedProps));
|
|
58
|
-
};
|
|
27
|
+
}, compare);
|
|
59
28
|
};
|
|
60
29
|
return ComponentInjector;
|
|
61
30
|
}());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentInjector.js","sourceRoot":"","sources":["../../../../src/injectors/components/ComponentInjector.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ComponentInjector.js","sourceRoot":"","sources":["../../../../src/injectors/components/ComponentInjector.tsx"],"names":[],"mappings":";;;;;AAAA,gDAA0B;AAC1B,oFAA2D;AAE3D,kEAA4C;AAC5C,wDAAkC;AAElC,2CAAqE;AAErE;IAAA;IAyBA,CAAC;IAxBC,kCAAM,GAAN,UACE,MAAkC,EAClC,KAAiC;QAEjC,IAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAClD,IAAA,iCAAoB,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACtC,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,yCAAa,GAArB,UACE,kBAA8C,EAC9C,KAAiC;QAEjC,IAAM,UAAU,GAAG,IAAA,2BAAmB,EAAC,kBAAkB,CAAC,CAAC;QAC3D,IAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACzE,IAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAEpE,OAAO,IAAA,mBAAW,EAAC,UAAC,WAAc;YAChC,IAAM,KAAK,GAAG,IAAA,kBAAQ,EAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YAC3C,IAAM,YAAY,GAAG,IAAI,uBAAa,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAElE,OAAO,8DAAG,MAAM,CAAC,YAA4B,CAAC,CAAI,CAAC;QACrD,CAAC,EAAE,OAAO,CAAC,CAAC;IACd,CAAC;IACH,wBAAC;AAAD,CAAC,AAzBD,IAyBC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { FunctionComponent } from 'react';
|
|
1
|
+
import React, { FunctionComponent } from 'react';
|
|
2
2
|
declare type MemoizedComponent = React.MemoExoticComponent<FunctionComponent<any>> & {
|
|
3
3
|
compare?: (prevProps: any, nextProps: any) => boolean;
|
|
4
4
|
};
|
|
5
5
|
export declare function isMemoizedComponent(component: FunctionComponent<any>): component is MemoizedComponent;
|
|
6
|
+
export declare function genericMemo<C extends React.ComponentType<any>>(Component: Parameters<typeof React.memo>[0], propsAreEqual?: Parameters<typeof React.memo>[1]): C;
|
|
6
7
|
export {};
|
|
7
8
|
//# sourceMappingURL=React.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"React.d.ts","sourceRoot":"","sources":["../../../src/utils/React.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"React.d.ts","sourceRoot":"","sources":["../../../src/utils/React.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAEjD,aAAK,iBAAiB,GAAG,KAAK,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG;IAC3E,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,KAAK,OAAO,CAAC;CACvD,CAAC;AACF,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,iBAAiB,CAAC,GAAG,CAAC,GAAG,SAAS,IAAI,iBAAiB,CAErG;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAC5D,SAAS,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAC3C,aAAa,CAAC,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAGjD"}
|
package/dist/src/utils/React.js
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isMemoizedComponent = void 0;
|
|
6
|
+
exports.genericMemo = exports.isMemoizedComponent = void 0;
|
|
7
|
+
var react_1 = __importDefault(require("react"));
|
|
4
8
|
function isMemoizedComponent(component) {
|
|
5
9
|
return component.type !== undefined;
|
|
6
10
|
}
|
|
7
11
|
exports.isMemoizedComponent = isMemoizedComponent;
|
|
12
|
+
function genericMemo(Component, propsAreEqual) {
|
|
13
|
+
return react_1.default.memo(Component, propsAreEqual);
|
|
14
|
+
}
|
|
15
|
+
exports.genericMemo = genericMemo;
|
|
8
16
|
//# sourceMappingURL=React.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"React.js","sourceRoot":"","sources":["../../../src/utils/React.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"React.js","sourceRoot":"","sources":["../../../src/utils/React.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAiD;AAKjD,SAAgB,mBAAmB,CAAC,SAAiC;IACnE,OAAQ,SAA+B,CAAC,IAAI,KAAK,SAAS,CAAC;AAC7D,CAAC;AAFD,kDAEC;AAED,SAAgB,WAAW,CACzB,SAA2C,EAC3C,aAAgD;IAEhD,OAAO,eAAK,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAiB,CAAC;AAC9D,CAAC;AALD,kCAKC"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import hoistNonReactStatics from 'hoist-non-react-statics';
|
|
3
3
|
import { ObjectGraph } from '../../graph/ObjectGraph';
|
|
4
4
|
import PropsInjector from './PropsInjector';
|
|
5
5
|
import useGraph from './useGraph';
|
|
6
6
|
import { Constructable } from '../../types';
|
|
7
|
-
import { isMemoizedComponent } from '../../utils/React';
|
|
7
|
+
import { genericMemo, isMemoizedComponent } from '../../utils/React';
|
|
8
8
|
|
|
9
9
|
export default class ComponentInjector {
|
|
10
10
|
inject<P>(
|
|
@@ -20,22 +20,15 @@ export default class ComponentInjector {
|
|
|
20
20
|
InjectionCandidate: React.FunctionComponent<P>,
|
|
21
21
|
Graph: Constructable<ObjectGraph>,
|
|
22
22
|
): React.FunctionComponent<Partial<P>> {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
const isMemoized = isMemoizedComponent(InjectionCandidate);
|
|
24
|
+
const Target = isMemoized ? InjectionCandidate.type : InjectionCandidate;
|
|
25
|
+
const compare = isMemoized ? InjectionCandidate.compare : undefined;
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
setProxiedProps(new PropsInjector(graph).inject(passedProps));
|
|
31
|
-
}
|
|
32
|
-
} else {
|
|
33
|
-
setProxiedProps(new PropsInjector(graph).inject(passedProps));
|
|
34
|
-
}
|
|
35
|
-
}, [passedProps]);
|
|
27
|
+
return genericMemo((passedProps: P) => {
|
|
28
|
+
const graph = useGraph(Graph, passedProps);
|
|
29
|
+
const proxiedProps = new PropsInjector(graph).inject(passedProps);
|
|
36
30
|
|
|
37
|
-
const Target = isMemoizedComponent(InjectionCandidate) ? InjectionCandidate.type : InjectionCandidate;
|
|
38
31
|
return <>{Target(proxiedProps as unknown as P)}</>;
|
|
39
|
-
};
|
|
32
|
+
}, compare);
|
|
40
33
|
}
|
|
41
34
|
}
|
package/src/utils/React.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FunctionComponent } from 'react';
|
|
1
|
+
import React, { FunctionComponent } from 'react';
|
|
2
2
|
|
|
3
3
|
type MemoizedComponent = React.MemoExoticComponent<FunctionComponent<any>> & {
|
|
4
4
|
compare?: (prevProps: any, nextProps: any) => boolean;
|
|
@@ -6,3 +6,10 @@ type MemoizedComponent = React.MemoExoticComponent<FunctionComponent<any>> & {
|
|
|
6
6
|
export function isMemoizedComponent(component: FunctionComponent<any>): component is MemoizedComponent {
|
|
7
7
|
return (component as MemoizedComponent).type !== undefined;
|
|
8
8
|
}
|
|
9
|
+
|
|
10
|
+
export function genericMemo<C extends React.ComponentType<any>>(
|
|
11
|
+
Component: Parameters<typeof React.memo>[0],
|
|
12
|
+
propsAreEqual?: Parameters<typeof React.memo>[1],
|
|
13
|
+
) {
|
|
14
|
+
return React.memo(Component, propsAreEqual) as unknown as C;
|
|
15
|
+
}
|