@webiny/react-composition
Advanced tools
Comparing version 5.41.1 to 5.41.2-beta.0
@@ -21,3 +21,3 @@ "use strict"; | ||
var decorators = Array.isArray(props.with) ? props.with : [props.with]; | ||
return composeComponent(targetFn.original, decorators, scope); | ||
return composeComponent(targetFn.original, decorators, scope[scope.length - 1]); | ||
}, [props.with]); | ||
@@ -24,0 +24,0 @@ return null; |
import React from "react"; | ||
export interface CompositionScopeContext { | ||
name: string; | ||
scope: string[]; | ||
} | ||
@@ -10,3 +10,3 @@ interface CompositionScopeProps { | ||
export declare const CompositionScope: ({ name, children }: CompositionScopeProps) => React.JSX.Element; | ||
export declare function useCompositionScope(): string | undefined; | ||
export declare function useCompositionScope(): string[]; | ||
export {}; |
@@ -9,2 +9,3 @@ "use strict"; | ||
exports.useCompositionScope = useCompositionScope; | ||
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); | ||
var _react = _interopRequireDefault(require("react")); | ||
@@ -15,5 +16,6 @@ var CompositionScopeContext = /*#__PURE__*/_react.default.createContext(undefined); | ||
children = _ref.children; | ||
var parentScope = useCompositionScope(); | ||
return /*#__PURE__*/_react.default.createElement(CompositionScopeContext.Provider, { | ||
value: { | ||
name: name | ||
scope: [].concat((0, _toConsumableArray2.default)(parentScope), [name]) | ||
} | ||
@@ -25,7 +27,7 @@ }, children); | ||
if (!context) { | ||
return undefined; | ||
return []; | ||
} | ||
return context.name; | ||
return context.scope; | ||
} | ||
//# sourceMappingURL=CompositionScope.js.map |
@@ -28,3 +28,3 @@ import React, { ComponentType } from "react"; | ||
interface CompositionContextGetComponentCallable { | ||
(component: ComponentType<unknown>, scope?: string): ComposedFunction | GenericComponent | undefined; | ||
(component: ComponentType<unknown>, scope: string[]): ComposedFunction | GenericComponent | undefined; | ||
} | ||
@@ -31,0 +31,0 @@ interface CompositionContext { |
@@ -13,2 +13,3 @@ "use strict"; | ||
exports.useOptionalComposition = useOptionalComposition; | ||
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper")); | ||
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); | ||
@@ -81,12 +82,21 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); | ||
var getComponent = (0, _react.useCallback)(function (Component) { | ||
var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "*"; | ||
var scopeMap = components.get(scope) || new Map(); | ||
var composedComponent = scopeMap.get(Component); | ||
if (!composedComponent && scope !== "*") { | ||
// Check if a default scope component exists | ||
var defaultScopeMap = components.get("*") || new Map(); | ||
var defaultComponent = defaultScopeMap.get(Component); | ||
return defaultComponent ? defaultComponent.component : undefined; | ||
var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; | ||
var scopesToResolve = ["*"].concat((0, _toConsumableArray2.default)(scope)).reverse(); | ||
var _iterator = (0, _createForOfIteratorHelper2.default)(scopesToResolve), | ||
_step; | ||
try { | ||
for (_iterator.s(); !(_step = _iterator.n()).done;) { | ||
var _scope = _step.value; | ||
var scopeMap = components.get(_scope) || new Map(); | ||
var composedComponent = scopeMap.get(Component); | ||
if (composedComponent) { | ||
return composedComponent.component; | ||
} | ||
} | ||
} catch (err) { | ||
_iterator.e(err); | ||
} finally { | ||
_iterator.f(); | ||
} | ||
return composedComponent ? composedComponent.component : undefined; | ||
return undefined; | ||
}, [components]); | ||
@@ -93,0 +103,0 @@ var context = (0, _react.useMemo)(function () { |
{ | ||
"name": "@webiny/react-composition", | ||
"version": "5.41.1", | ||
"version": "5.41.2-beta.0", | ||
"main": "index.js", | ||
@@ -28,4 +28,4 @@ "repository": { | ||
"@testing-library/react": "15.0.7", | ||
"@webiny/cli": "5.41.1", | ||
"@webiny/project-utils": "5.41.1", | ||
"@webiny/cli": "5.41.2-beta.0", | ||
"@webiny/project-utils": "5.41.2-beta.0", | ||
"ttypescript": "1.5.15", | ||
@@ -42,3 +42,3 @@ "typescript": "4.9.5" | ||
}, | ||
"gitHead": "4d34943dbfc5a776afc74fffd2cfd2dca60bffcd" | ||
"gitHead": "a259e2af938ceb1e2d35b2bef9edcee4459352de" | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
67683
697
2