@@ -8,6 +8,7 @@ import { LabelInstanceTableLayout } from '../layouts/LabelInstanceTableLayout';
88import { SingleItemLayout } from '../layouts/SingleItemLayout' ;
99import { wrapComponent , WrapperProps } from './componentWrapper' ;
1010import { findAndReturn } from './listUtils' ;
11+ import { createRegistratorForMiniApp , createRegistratorForSingle } from '../registrators/registrators' ;
1112
1213export interface RegistryConfig {
1314 componentWrapper ?: React . ComponentType < WrapperProps > ;
@@ -28,11 +29,11 @@ class Registry {
2829 }
2930
3031 registerAsGrid ( name : string , minWidth : number , componentRegistrator : ( registry : Registry ) => void ) {
31- return this . register ( name , GridLayout , componentRegistrator , '' , { minWidth} ) ;
32+ return this . register ( name , GridLayout , componentRegistrator , undefined , { minWidth} ) ;
3233 }
3334
3435 registerAsRows ( name : string , componentRegistrator : ( registry : Registry ) => void ) {
35- return this . register ( name , GridLayout , componentRegistrator , '' , { minWidth : 0 } ) ;
36+ return this . register ( name , GridLayout , componentRegistrator , undefined , { minWidth : 0 } ) ;
3637 }
3738
3839 registerAsTabs ( name : string , componentRegistrator : ( registry : Registry ) => void ) {
@@ -43,26 +44,26 @@ class Registry {
4344 return this . register ( name , LabelInstanceTableLayout , componentRegistrator ) ;
4445 }
4546
46- registerSingle ( name : string , componentRegistrator : ( registry : Registry ) => void ) {
47- this . register ( name , SingleItemLayout , componentRegistrator ) ;
48- return this ;
47+ registerSingle ( name : string , singleComponent : React . ComponentType ) {
48+ return this . register ( name , SingleItemLayout , createRegistratorForSingle ( name , singleComponent ) ) ;
4949 }
5050
51- registerAsMiniApp ( name : string , urlPrefix : string , componentRegistrator : ( registry : Registry ) => void ) {
52- this . register ( name , SingleItemLayout , componentRegistrator , urlPrefix ) ;
51+ registerAsMiniApp ( name : string , initialUrl : string , urlRegexp : RegExp , appComponent : React . ComponentType ) {
52+ return this . register ( name , SingleItemLayout ,
53+ createRegistratorForMiniApp ( initialUrl , urlRegexp , appComponent ) , urlRegexp ) ;
5354 }
5455
5556 register ( name : string ,
5657 layoutComponent : React . ComponentType < LayoutProps > ,
5758 componentRegistrator : ( registry : Registry ) => void ,
58- urlPrefix : string = '' ,
59+ urlRegexp : RegExp | undefined = undefined ,
5960 layoutOpts : object = { } ) {
6061
6162 if ( this . usedNames . indexOf ( name ) !== - 1 ) {
6263 throw new Error ( `name ${ name } was already used` ) ;
6364 }
6465
65- this . currentDemo = new DemoEntry ( name , layoutComponent , urlPrefix , layoutOpts ) ;
66+ this . currentDemo = new DemoEntry ( name , layoutComponent , urlRegexp , layoutOpts ) ;
6667 this . demoEntries . push ( this . currentDemo ) ;
6768
6869 this . usedNames . push ( name ) ;
@@ -102,7 +103,7 @@ class Registry {
102103
103104 firstMiniAppByUrl ( url : string ) : DemoEntry | null {
104105 const byUrl = this . demoEntries
105- . filter ( entry => entry . isMiniApp ( ) && url . startsWith ( entry . urlPrefix ) ) ;
106+ . filter ( entry => entry . isMiniApp ( ) && entry . urlRegexp ! . test ( url ) ) ;
106107
107108 return byUrl . length > 0 ? byUrl [ 0 ] : null ;
108109 }
0 commit comments