import RouteRecognizer, { Results } from 'route-recognizer'; // import 'redefine-custom-elements'; import { Connector , ConnectorTemplate } from './connector'; import DesignSystem , { DesignPatern , CustomElement , CustomElementPatern } from './design-system'; // import { DOMRender , NodeTemplate } from './dom/dom-render'; import { DOM , NodeTemplate } from './dom'; import { Controller, ThoriumController , IViewController , PaternArea } from './controller'; // export declare var DOMwindow: Window ; // vous pouvez spécifier le type de votre variable ici // export declare var DOMdocument: Document // vous pouvez spécifier le type de votre variable ici // DOMwindow = ( window ? window : (new JSDOM()).dom ); // DOMdocument = DOMwindow.document; export * from './connector'; export * from './design-system'; export * from './dom'; export * from './controller'; class Page{ #_component:any; constructor(component){ this.#_component = component; } /** * Rendering process */ #_render(){ } /** * Build the page */ show(){this.#_render();} } export interface Route{ name:string; component:any; } export class PageHandler extends RouteRecognizer{ #_pages:Map = new Map(); get list(){ return Object.fromEntries( this.#_pages ) } /** * Define the endpoint of the page * @param pageOption * @returns */ set(pageOption:Route):Page{ // Ajout de la page au répertoir this.#_pages.set(pageOption.name , new Page(pageOption.component)); // Ajout du path dans le gestionaire + ajout d'un point de lancement this.add([{path : pageOption.name , handler : () => { return DOM.virtual.render(pageOption.component , document.body); } }]) // Return la page return this.#_pages.get(pageOption.name); } render(pagePath:string){ let results = this.recognize(pagePath); console.log(results); if(results[0]){ console.log(results) let page = (results[0] as any).handler() as NodeTemplate; DOM.virtual.render( page , document.body) } } } namespace Core{ // Distribue un routeur export const router = () => {return RouteRecognizer}; // Active page export var Page = null; // Routeur gérant les pages export const pages:PageHandler = new PageHandler(); } export default Core; export { DesignSystem, NodeTemplate, DOM };