1
1
import {
2
- createTempate , L1 , L2 , L3 ,
2
+ createTemplate , L1 , L2 , L3 ,
3
3
} from './template' ;
4
4
5
5
import {
@@ -106,7 +106,7 @@ function getIndent(indent: number) {
106
106
const renderObjectEntry : ( model : {
107
107
key : string ;
108
108
value : string ;
109
- } ) => string = createTempate ( `
109
+ } ) => string = createTemplate ( `
110
110
<#= it.key #>: "<#= it.value #>"
111
111
` . trimRight ( ) ) ;
112
112
@@ -136,7 +136,7 @@ const renderTemplateOption: (model: {
136
136
actualOptionName : string ;
137
137
render : string ;
138
138
component : string ;
139
- } ) => string = createTempate ( `
139
+ } ) => string = createTemplate ( `
140
140
{
141
141
tmplOption: "<#= it.actualOptionName #>",
142
142
render: "<#= it.render #>",
@@ -145,9 +145,9 @@ const renderTemplateOption: (model: {
145
145
}
146
146
` . trim ( ) ) ;
147
147
148
- const renderStringEntry : ( value : string ) => string = createTempate ( '"<#= it #>"' ) ;
148
+ const renderStringEntry : ( value : string ) => string = createTemplate ( '"<#= it #>"' ) ;
149
149
150
- const renderPropTyping : ( model : IRenderedPropTyping ) => string = createTempate (
150
+ const renderPropTyping : ( model : IRenderedPropTyping ) => string = createTemplate (
151
151
' <#= it.propName #>: '
152
152
153
153
+ '<#? it.renderedTypes.length === 1 #>'
@@ -169,7 +169,7 @@ const renderModule: (model: {
169
169
defaultExport : string ;
170
170
renderedExports : string ;
171
171
renderedReExports ?: string ;
172
- } ) => string = createTempate (
172
+ } ) => string = createTemplate (
173
173
'<#= it.renderedImports #>\n'
174
174
175
175
+ '<#? it.renderedOptionsInterface #>'
@@ -204,7 +204,10 @@ const renderImports: (model: {
204
204
hasPropTypings : boolean ;
205
205
hasExplicitTypes : boolean ;
206
206
configComponentPath ?: string ;
207
- } ) => string = createTempate (
207
+ customTypeImports ?: Record < string , Array < string > > ;
208
+ defaultTypeImports ?: Record < string , string > ;
209
+ wildcardTypeImports ?: Record < string , string > ;
210
+ } ) => string = createTemplate (
208
211
'<#? it.hasExplicitTypes #>'
209
212
+ 'export { ExplicitTypes } from "<#= it.dxExportPath #>";\n'
210
213
+ '<#?#>'
@@ -225,6 +228,26 @@ const renderImports: (model: {
225
228
226
229
+ '<#? it.configComponentPath #>'
227
230
+ '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
+ + '<#~#>'
228
251
+ '<#?#>' ,
229
252
) ;
230
253
@@ -242,7 +265,7 @@ const renderNestedComponent: (model: {
242
265
renderedSubscribableOptions ?: string [ ] ;
243
266
renderedTemplateProps ?: string [ ] ;
244
267
owners : string [ ] ;
245
- } ) => string = createTempate (
268
+ } ) => string = createTemplate (
246
269
`${ '// owners:\n'
247
270
+ '<#~ it.owners : owner #>'
248
271
+ '// <#= owner #>\n'
@@ -312,7 +335,7 @@ const renderOptionsInterface: (model: {
312
335
name : string ;
313
336
type : string ;
314
337
} > ;
315
- } ) => string = createTempate (
338
+ } ) => string = createTemplate (
316
339
`type <#= it.optionsName #>${ TYPE_PARAMS_WITH_DEFAULTS } = React.PropsWithChildren<Properties${ TYPE_PARAMS } & IHtmlOptions & {\n`
317
340
318
341
+ '<#? it.typeParams #>'
@@ -349,7 +372,7 @@ const renderComponent: (model: {
349
372
isPortalComponent ?: boolean ;
350
373
useRequestAnimationFrameFlag ?: boolean ;
351
374
typeParams : string [ ] | undefined ;
352
- } ) => string = createTempate (
375
+ } ) => string = createTemplate (
353
376
`class <#= it.className #>${ TYPE_PARAMS_WITH_DEFAULTS } extends BaseComponent<React.PropsWithChildren<<#= it.optionsName #>${ TYPE_PARAMS } >> {
354
377
355
378
public get instance(): <#= it.widgetName #>${ TYPE_PARAMS } {
@@ -451,7 +474,13 @@ function createPropTypingModel(typing: IPropTyping): IRenderedPropTyping {
451
474
} ;
452
475
}
453
476
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 {
455
484
const nestedComponents = component . nestedComponents
456
485
? component . nestedComponents
457
486
. sort ( createKeyComparator < INestedComponent > ( ( o ) => o . className ) )
@@ -577,6 +606,9 @@ function generate(component: IComponent, generateReexports = false): string {
577
606
configComponentPath : isNotEmptyArray ( nestedComponents )
578
607
? component . configComponentPath
579
608
: undefined ,
609
+ customTypeImports,
610
+ defaultTypeImports,
611
+ wildcardTypeImports,
580
612
} ) ,
581
613
582
614
renderedOptionsInterface : ! hasExtraOptions ? undefined : renderOptionsInterface ( {
0 commit comments