# elementor/3.8.0-beta1/app/assets/js/router.js

Elementor Website Builder – more than just a page builder, version 3.8.0-beta1. 41 lines.

- Page: https://pluginprobe.com/plugins/elementor/3.8.0-beta1/code/app/assets/js/router.js
- Raw: https://pluginprobe.com/plugins/elementor/3.8.0-beta1/raw/app/assets/js/router.js
- Modified: 2022-09-19T16:26:20+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/elementor/3.8.0-beta1/code/app/assets/js/router.js#L10-L20`.

```javascript
/**
 * App Router
 *
 * TODO: Temporary solution for routing extensibility.
 */

class Router {
	/**
	 * @type {*[]}
	 */
	routes = [];

	history = null;

	/**
	 *
	 * @param {{path: string, component: Object, props: Object}} route
	 */
	addRoute( route ) {
		this.routes.push( route );
	}

	getRoutes() {
		return this.routes.map( ( route ) => {
			const props = route.props || {};
			// Use the path as a key, and add it as a prop.
			props.path = props.key = route.path;
			return React.createElement( route.component, props );
		} );
	}
}

const router = new Router();

// Make router available for use within packages.
window.elementorAppPackages = {
	router,
};

export default router;

```
