@@ -240335,8 +240335,8 @@ let emitExportFromTypeDeclarations ~config ~emitters ~env ~typeGetNormalized
240335
240335
(env, emitters)
240336
240336
240337
240337
let rec emitCodeItem ~config ~emitters ~moduleItemsEmitter ~env ~fileName
240338
- ~outputFileRelative ~resolver ~typeGetConverter ~typeGetNormalized
240339
- ~typeNameIsInterface ~variantTables codeItem =
240338
+ ~outputFileRelative ~resolver ~typeGetConverter ~typeGetInlined
240339
+ ~typeGetNormalized ~ typeNameIsInterface ~variantTables codeItem =
240340
240340
if !Debug.codeItems then
240341
240341
Log_.item "Code Item: %s\n"
240342
240342
(codeItem |> codeItemToString ~config ~typeNameIsInterface);
@@ -240517,6 +240517,62 @@ let rec emitCodeItem ~config ~emitters ~moduleItemsEmitter ~env ~fileName
240517
240517
in
240518
240518
( Function { function_ with componentName = Some hookName },
240519
240519
Some { HookType.propsType; resolvedTypeName; typeVars } )
240520
+ | Function
240521
+ ({
240522
+ argTypes = [ { aType = Ident { name = "props" } as propsType } ];
240523
+ retType;
240524
+ } as function_)
240525
+ when retType |> EmitType.isTypeFunctionComponent ~fields:[] ->
240526
+ let compType =
240527
+ match typeGetInlined propsType with
240528
+ | Object (closedFlags, fields) ->
240529
+ let propsType =
240530
+ let fields =
240531
+ fields
240532
+ |> List.map (fun (field : field) ->
240533
+ match
240534
+ field.nameJS = "children"
240535
+ && field.type_ |> EmitType.isTypeReactElement
240536
+ with
240537
+ | true ->
240538
+ { field with type_ = EmitType.typeReactChild }
240539
+ | false -> field)
240540
+ in
240541
+ Object (closedFlags, fields)
240542
+ in
240543
+ let function_ =
240544
+ {
240545
+ function_ with
240546
+ argTypes = [ { aName = ""; aType = propsType } ];
240547
+ }
240548
+ in
240549
+ let chopSuffix suffix =
240550
+ match resolvedNameStr = suffix with
240551
+ | true -> ""
240552
+ | false -> (
240553
+ match
240554
+ Filename.check_suffix resolvedNameStr ("_" ^ suffix)
240555
+ with
240556
+ | true ->
240557
+ Filename.chop_suffix resolvedNameStr ("_" ^ suffix)
240558
+ | false -> resolvedNameStr)
240559
+ in
240560
+ let suffix =
240561
+ if originalName = default then chopSuffix default
240562
+ else if originalName = make then chopSuffix make
240563
+ else resolvedNameStr
240564
+ in
240565
+ let hookName =
240566
+ (fileName |> ModuleName.toString)
240567
+ ^
240568
+ match suffix = "" with
240569
+ | true -> suffix
240570
+ | false -> "_" ^ suffix
240571
+ in
240572
+ Function { function_ with componentName = Some hookName }
240573
+ | _ -> type_
240574
+ in
240575
+ (compType, None)
240520
240576
| _ -> (type_, None)
240521
240577
in
240522
240578
@@ -240539,7 +240595,8 @@ let rec emitCodeItem ~config ~emitters ~moduleItemsEmitter ~env ~fileName
240539
240595
in
240540
240596
(* For doc gen (https://github.com/cristianoc/genType/issues/342) *)
240541
240597
config.emitImportReact <- true;
240542
- emitExportType ~emitters ~config ~typeGetNormalized
240598
+ emitExportType ~emitters ~config
240599
+ ~typeGetNormalized
240543
240600
~typeNameIsInterface exportType
240544
240601
| _ -> emitters
240545
240602
in
@@ -240560,14 +240617,14 @@ let rec emitCodeItem ~config ~emitters ~moduleItemsEmitter ~env ~fileName
240560
240617
(envWithRequires, emitters)
240561
240618
240562
240619
and emitCodeItems ~config ~outputFileRelative ~emitters ~moduleItemsEmitter ~env
240563
- ~fileName ~resolver ~typeNameIsInterface ~typeGetConverter
240620
+ ~fileName ~resolver ~typeNameIsInterface ~typeGetConverter ~typeGetInlined
240564
240621
~typeGetNormalized ~variantTables codeItems =
240565
240622
codeItems
240566
240623
|> List.fold_left
240567
240624
(fun (env, emitters) ->
240568
240625
emitCodeItem ~config ~emitters ~moduleItemsEmitter ~env ~fileName
240569
- ~outputFileRelative ~resolver ~typeGetConverter ~typeGetNormalized
240570
- ~typeNameIsInterface ~variantTables)
240626
+ ~outputFileRelative ~resolver ~typeGetConverter ~typeGetInlined
240627
+ ~typeGetNormalized ~ typeNameIsInterface ~variantTables)
240571
240628
(env, emitters)
240572
240629
240573
240630
let emitRequires ~importedValueOrComponent ~early ~config ~requires emitters =
@@ -240837,12 +240894,13 @@ let emitTranslationAsString ~config ~fileName ~inputCmtTranslateTypeDeclarations
240837
240894
try exportTypeMap |> StringMap.find s
240838
240895
with Not_found -> env.exportTypeMapFromOtherFiles |> StringMap.find s
240839
240896
in
240840
- let typeGetNormalized_ ~env type_ =
240897
+ let typeGetNormalized__ ~inline ~env type_ =
240841
240898
type_
240842
- |> Converter.typeGetNormalized ~config ~inline:false
240843
- ~lookupId:(lookupId_ ~env)
240899
+ |> Converter.typeGetNormalized ~config ~inline ~lookupId:(lookupId_ ~env)
240844
240900
~typeNameIsInterface:(typeNameIsInterface ~env)
240845
240901
in
240902
+ let typeGetNormalized_ = typeGetNormalized__ ~inline:false in
240903
+ let typeGetInlined_ = typeGetNormalized__ ~inline:true in
240846
240904
let typeGetConverter_ ~env type_ =
240847
240905
type_
240848
240906
|> Converter.typeGetConverter ~config ~lookupId:(lookupId_ ~env)
@@ -240867,7 +240925,7 @@ let emitTranslationAsString ~config ~fileName ~inputCmtTranslateTypeDeclarations
240867
240925
let env, emitters =
240868
240926
translation.codeItems
240869
240927
|> emitCodeItems ~config ~emitters ~moduleItemsEmitter ~env ~fileName
240870
- ~outputFileRelative ~resolver
240928
+ ~outputFileRelative ~resolver ~typeGetInlined:(typeGetInlined_ ~env)
240871
240929
~typeGetNormalized:(typeGetNormalized_ ~env)
240872
240930
~typeGetConverter:(typeGetConverter_ ~env)
240873
240931
~typeNameIsInterface:(typeNameIsInterface ~env) ~variantTables
0 commit comments