UNPKG

infrastructure-components

Version:

Infrastructure-Components configure the infrastructure of your React-App as part of your React-Components.

58 lines 2.44 kB
"use strict"; /** * Created by frank.zickert on 05.04.19. */ Object.defineProperty(exports, "__esModule", { value: true }); /** * Get the children of the current component as an array * * * @param component the parent component * @return an Array of the children, even if there is only a single child or no (empty array). If the component itself * is an array, its items are returned */ exports.getChildrenArray = (component) => { if (component == undefined) { return []; } if (Array.isArray(component) && component.length > 0) { //console.log("component is array: ", component) return [...component]; } if (component.children == undefined) { return []; } return Array.isArray(component.children) ? component.children : [component.children]; }; /** * Finds the components of the specified type among the (grand-)children recursively - but we assume that the same * types must not be parent-children, e.g. there is no middleware as child of middleware * But it allows components to "insulate" a component, but then, the component should do something meaningful * with the insulated component, e.g. a route can have its own middlewares that should not apply to the overall webapp * * @param component the parent component * @param isComponent a function that tests the component for the searched one, returns true if the component is the searched * @return a list of the found components */ exports.findComponentRecursively = (component, isComponent) => { // no component, nothing to return if (component === undefined) { return []; } // when we have an array, we search each component separately and concat the results if (Array.isArray(component) && component.length > 0) { //console.log("component is array: ", component) return component.reduce((res, c) => res.concat(exports.findComponentRecursively(c, isComponent)), []); } ; // if the component is of the searched type, we can return it if (isComponent(component)) { return [component]; } ; // finally, search the children return exports.findComponentRecursively(component.children, isComponent).filter( // // if the component insulates the searched Type, do not return it child => component.insulatesChildComponent === undefined || !component.insulatesChildComponent(child)); }; //# sourceMappingURL=index.js.map