56 lines
1.8 KiB
Plaintext
56 lines
1.8 KiB
Plaintext
|
//-
|
||
|
Hubl router declaration for latter generation
|
||
|
Create a window.hubl.components, accessible by all components with the route declaration.
|
||
|
Components can also get benefits from the `getRoute` function
|
||
|
Eg.
|
||
|
```
|
||
|
window.hubl.getRoute('chat', true)
|
||
|
```
|
||
|
will return the route of the first chat component, if exists, or triggers an error.
|
||
|
-
|
||
|
let routes = new Set();
|
||
|
const getRoute = (type, returnFirst = false) => {
|
||
|
let availables = components.filter(c=>c.type==type);
|
||
|
if(availables.length > 1) {
|
||
|
if(returnFirst) {
|
||
|
return availables[0].route;
|
||
|
} else {
|
||
|
console.error(`Too much components availables for route ${type}`);
|
||
|
}
|
||
|
} else if(availables.length < 1) {
|
||
|
console.error(`No component found for route ${type}`);
|
||
|
} else {
|
||
|
return availables[0].route;
|
||
|
}
|
||
|
}
|
||
|
const getComponent = (type, returnFirst = false) => {
|
||
|
let availables = components.filter(c=>c.type==type);
|
||
|
if(availables.length > 1) {
|
||
|
if(returnFirst) {
|
||
|
return availables[0];
|
||
|
} else {
|
||
|
console.error(`Too much components availables for type ${type}`);
|
||
|
}
|
||
|
} else if(availables.length < 1) {
|
||
|
console.error(`No component found for type ${type}`);
|
||
|
} else {
|
||
|
return availables[0];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
for component of components
|
||
|
-
|
||
|
if(typeof component.route === 'undefined') {
|
||
|
component.route = component.type;
|
||
|
}
|
||
|
if(component.route) {
|
||
|
component.uniq = Math.random().toString(16).slice(2);
|
||
|
let route = component.route;
|
||
|
if (routes.has(component.route)) {
|
||
|
route += "-" + component.uniq;
|
||
|
}
|
||
|
routes.add(route);
|
||
|
component.route = route;
|
||
|
}
|
||
|
- const hublComponents = `window.hubl={};window.hubl.components = ${JSON.stringify(components)};`;
|
||
|
script!=hublComponents
|