11import {
2- createTempate , L1 , L2 , L3 ,
2+ createTemplate , L1 , L2 , L3 ,
33} from './template' ;
44
55import {
@@ -106,7 +106,7 @@ function getIndent(indent: number) {
106106const renderObjectEntry : ( model : {
107107 key : string ;
108108 value : string ;
109- } ) => string = createTempate ( `
109+ } ) => string = createTemplate ( `
110110 <#= it.key #>: "<#= it.value #>"
111111` . trimRight ( ) ) ;
112112
@@ -136,7 +136,7 @@ const renderTemplateOption: (model: {
136136 actualOptionName : string ;
137137 render : string ;
138138 component : string ;
139- } ) => string = createTempate ( `
139+ } ) => string = createTemplate ( `
140140 {
141141 tmplOption: "<#= it.actualOptionName #>",
142142 render: "<#= it.render #>",
@@ -145,9 +145,9 @@ const renderTemplateOption: (model: {
145145 }
146146` . trim ( ) ) ;
147147
148- const renderStringEntry : ( value : string ) => string = createTempate ( '"<#= it #>"' ) ;
148+ const renderStringEntry : ( value : string ) => string = createTemplate ( '"<#= it #>"' ) ;
149149
150- const renderPropTyping : ( model : IRenderedPropTyping ) => string = createTempate (
150+ const renderPropTyping : ( model : IRenderedPropTyping ) => string = createTemplate (
151151 ' <#= it.propName #>: '
152152
153153+ '<#? it.renderedTypes.length === 1 #>'
@@ -169,7 +169,7 @@ const renderModule: (model: {
169169 defaultExport : string ;
170170 renderedExports : string ;
171171 renderedReExports ?: string ;
172- } ) => string = createTempate (
172+ } ) => string = createTemplate (
173173 '<#= it.renderedImports #>\n'
174174
175175+ '<#? it.renderedOptionsInterface #>'
@@ -204,7 +204,10 @@ const renderImports: (model: {
204204 hasPropTypings : boolean ;
205205 hasExplicitTypes : boolean ;
206206 configComponentPath ?: string ;
207- } ) => string = createTempate (
207+ customTypeImports ?: Record < string , Array < string > > ;
208+ defaultTypeImports ?: Record < string , string > ;
209+ wildcardTypeImports ?: Record < string , string > ;
210+ } ) => string = createTemplate (
208211 '<#? it.hasExplicitTypes #>'
209212 + 'export { ExplicitTypes } from "<#= it.dxExportPath #>";\n'
210213+ '<#?#>'
@@ -225,6 +228,26 @@ const renderImports: (model: {
225228
226229+ '<#? it.configComponentPath #>'
227230 + 'import NestedOption from "<#= it.configComponentPath #>";\n'
231+ + '<#?#>'
232+
233+ + '<#? it.customTypeImports && Object.keys(it.customTypeImports).length #>\n'
234+ + '<#~ Object.keys(it.customTypeImports) : module #>'
235+ + 'import type { <#= it.customTypeImports[module].join(", ")#> } from "<#= module #>";\n'
236+ + '<#~#>'
237+ + '<#?#>'
238+
239+ + '<#? it.defaultTypeImports && Object.keys(it.defaultTypeImports).length #>\n'
240+ + '<#~ Object.keys(it.defaultTypeImports) : defaultImport #>'
241+ + '<#? defaultImport !== it.widgetName #>'
242+ + 'import type <#= defaultImport #> from "<#= it.defaultTypeImports[defaultImport] #>";\n'
243+ + '<#?#>'
244+ + '<#~#>'
245+ + '<#?#>'
246+
247+ + '<#? it.wildcardTypeImports && Object.keys(it.wildcardTypeImports).length #>\n'
248+ + '<#~ Object.keys(it.wildcardTypeImports) : wildcardImportModule #>'
249+ + 'import type * as <#= it.wildcardTypeImports[wildcardImportModule] #> from "<#= wildcardImportModule #>";\n'
250+ + '<#~#>'
228251+ '<#?#>' ,
229252) ;
230253
@@ -242,7 +265,7 @@ const renderNestedComponent: (model: {
242265 renderedSubscribableOptions ?: string [ ] ;
243266 renderedTemplateProps ?: string [ ] ;
244267 owners : string [ ] ;
245- } ) => string = createTempate (
268+ } ) => string = createTemplate (
246269 `${ '// owners:\n'
247270+ '<#~ it.owners : owner #>'
248271 + '// <#= owner #>\n'
@@ -312,7 +335,7 @@ const renderOptionsInterface: (model: {
312335 name : string ;
313336 type : string ;
314337 } > ;
315- } ) => string = createTempate (
338+ } ) => string = createTemplate (
316339 `type <#= it.optionsName #>${ TYPE_PARAMS_WITH_DEFAULTS } = React.PropsWithChildren<Properties${ TYPE_PARAMS } & IHtmlOptions & {\n`
317340
318341+ '<#? it.typeParams #>'
@@ -349,7 +372,7 @@ const renderComponent: (model: {
349372 isPortalComponent ?: boolean ;
350373 useRequestAnimationFrameFlag ?: boolean ;
351374 typeParams : string [ ] | undefined ;
352- } ) => string = createTempate (
375+ } ) => string = createTemplate (
353376 `class <#= it.className #>${ TYPE_PARAMS_WITH_DEFAULTS } extends BaseComponent<React.PropsWithChildren<<#= it.optionsName #>${ TYPE_PARAMS } >> {
354377
355378 public get instance(): <#= it.widgetName #>${ TYPE_PARAMS } {
@@ -451,7 +474,13 @@ function createPropTypingModel(typing: IPropTyping): IRenderedPropTyping {
451474 } ;
452475}
453476
454- function generate ( component : IComponent , generateReexports = false ) : string {
477+ function generate (
478+ component : IComponent ,
479+ generateReexports = false ,
480+ customTypeImports ?: Record < string , Array < string > > ,
481+ defaultTypeImports ?: Record < string , string > ,
482+ wildcardTypeImports ?: Record < string , string > ,
483+ ) : string {
455484 const nestedComponents = component . nestedComponents
456485 ? component . nestedComponents
457486 . sort ( createKeyComparator < INestedComponent > ( ( o ) => o . className ) )
@@ -577,6 +606,9 @@ function generate(component: IComponent, generateReexports = false): string {
577606 configComponentPath : isNotEmptyArray ( nestedComponents )
578607 ? component . configComponentPath
579608 : undefined ,
609+ customTypeImports,
610+ defaultTypeImports,
611+ wildcardTypeImports,
580612 } ) ,
581613
582614 renderedOptionsInterface : ! hasExtraOptions ? undefined : renderOptionsInterface ( {
0 commit comments