@react-native-windows/codegen 0.0.0-canary.116 → 0.0.0-canary.118
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -6
- package/lib-commonjs/generators/GenerateComponentWindows.js +1 -1
- package/lib-commonjs/generators/GenerateComponentWindows.js.map +1 -1
- package/lib-commonjs/generators/ObjectTypes.d.ts +2 -2
- package/lib-commonjs/generators/ObjectTypes.js.map +1 -1
- package/lib-commonjs/generators/PropObjectTypes.js +4 -13
- package/lib-commonjs/generators/PropObjectTypes.js.map +1 -1
- package/package.json +1 -1
- package/src/generators/GenerateComponentWindows.ts +1 -1
- package/src/generators/ObjectTypes.ts +2 -2
- package/src/generators/PropObjectTypes.ts +4 -14
package/CHANGELOG.md
CHANGED
|
@@ -1,19 +1,35 @@
|
|
|
1
1
|
# Change Log - @react-native-windows/codegen
|
|
2
2
|
|
|
3
|
-
<!-- This log was last generated on
|
|
3
|
+
<!-- This log was last generated on Fri, 31 Jan 2025 06:23:58 GMT and should not be manually modified. -->
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
-
## 0.0.0-canary.
|
|
7
|
+
## 0.0.0-canary.118
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Fri, 31 Jan 2025 06:23:58 GMT
|
|
10
10
|
|
|
11
11
|
### Changes
|
|
12
12
|
|
|
13
|
-
-
|
|
14
|
-
- Bump @rnw-scripts/eslint-config to v1.2.32
|
|
15
|
-
- Bump @rnw-scripts/just-task to v2.3.49
|
|
13
|
+
- Fix UpdateState on generated base class (30809111+acoates-ms@users.noreply.github.com)
|
|
16
14
|
|
|
15
|
+
## 0.0.0-canary.117
|
|
16
|
+
|
|
17
|
+
Thu, 23 Jan 2025 06:24:57 GMT
|
|
18
|
+
|
|
19
|
+
### Changes
|
|
20
|
+
|
|
21
|
+
- Initial integrate (yajurgrover24@gmail.com)
|
|
22
|
+
|
|
23
|
+
## 0.0.0-canary.116
|
|
24
|
+
|
|
25
|
+
Sat, 11 Jan 2025 06:30:40 GMT
|
|
26
|
+
|
|
27
|
+
### Changes
|
|
28
|
+
|
|
29
|
+
- Bump @react-native-windows/fs to v0.0.0-canary.61
|
|
30
|
+
- Bump @rnw-scripts/eslint-config to v1.2.32
|
|
31
|
+
- Bump @rnw-scripts/just-task to v2.3.49
|
|
32
|
+
|
|
17
33
|
## 0.0.0-canary.115
|
|
18
34
|
|
|
19
35
|
Fri, 10 Jan 2025 06:23:19 GMT
|
|
@@ -176,7 +176,7 @@ void Register::_COMPONENT_NAME_::NativeComponent(
|
|
|
176
176
|
builder.SetUpdateStateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
|
|
177
177
|
const winrt::Microsoft::ReactNative::IComponentState &newState) noexcept {
|
|
178
178
|
auto userData = view.UserData().as<TUserData>();
|
|
179
|
-
userData->
|
|
179
|
+
userData->UpdateState(view, newState);
|
|
180
180
|
});
|
|
181
181
|
}
|
|
182
182
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenerateComponentWindows.js","sourceRoot":"","sources":["../../src/generators/GenerateComponentWindows.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\n'use strict';\n\nimport type {\n SchemaType,\n EventTypeAnnotation,\n PropTypeAnnotation,\n ObjectTypeAnnotation,\n CommandParamTypeAnnotation,\n} from '@react-native/codegen/lib/CodegenSchema';\nimport {getAliasCppName, setPreferredModuleName} from './AliasManaging';\nimport {\n translateComponentPropsFieldType,\n translateComponentEventType,\n translateCommandParamType,\n} from './PropObjectTypes';\nimport type {CppStringTypes} from './ObjectTypes';\nimport type {AliasMap} from './AliasManaging';\n\nexport type {CppStringTypes} from './ObjectTypes';\n\ntype FilesOutput = Map<string, string>;\n\nconst headerTemplate = `/*\n * This file is auto-generated from ::_COMPONENT_NAME_::NativeComponent spec file in flow / TypeScript.\n */\n// clang-format off\n#pragma once\n\n#include <NativeModules.h>\n\n#ifdef RNW_NEW_ARCH\n#include <JSValueComposition.h>\n\n#include <winrt/Microsoft.ReactNative.Composition.h>\n#include <winrt/Microsoft.UI.Composition.h>\n#endif // #ifdef RNW_NEW_ARCH`;\n\nconst propsTemplate = `REACT_STRUCT(::_PROPS_NAME_::)\nstruct ::_PROPS_NAME_:: : winrt::implements<::_PROPS_NAME_::, winrt::Microsoft::ReactNative::IComponentProps> {\n ::_PROPS_NAME_::(winrt::Microsoft::ReactNative::ViewProps props, const winrt::Microsoft::ReactNative::IComponentProps& cloneFrom)\n : ViewProps(props)\n {\n if (cloneFrom) {\n auto cloneFromProps = cloneFrom.as<::_PROPS_NAME_::>();\n::_PROP_INITIALIZERS_:: \n }\n }\n\n void SetProp(uint32_t hash, winrt::hstring propName, winrt::Microsoft::ReactNative::IJSValueReader value) noexcept {\n winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this);\n }\n\n::_PROPS_FIELDS_::\n const winrt::Microsoft::ReactNative::ViewProps ViewProps;\n};`;\n\nconst propsObjectTemplate = `REACT_STRUCT(::_OBJECT_NAME_::)\nstruct ::_OBJECT_NAME_:: {\n::_OBJECT_FIELDS_::};\n`;\nconst eventsObjectTemplate = `REACT_STRUCT(::_OBJECT_NAME_::)\nstruct ::_OBJECT_NAME_:: {\n::_OBJECT_FIELDS_::};\n`;\n\nconst eventEmitterMethodTemplate = ` void ::_EVENT_NAME_::(::_EVENT_OBJECT_TYPE_:: &value) const {\n m_eventEmitter.DispatchEvent(L\"::_EVENT_NAME_NO_ON_::\", [value](const winrt::Microsoft::ReactNative::IJSValueWriter writer) {\n winrt::Microsoft::ReactNative::WriteValue(writer, value);\n });\n }`;\n\nconst eventEmitterTemplate = `::_COMPONENT_EVENT_OBJECT_TYPES_::\n\nstruct ::_EVENT_EMITTER_NAME_:: {\n ::_EVENT_EMITTER_NAME_::(const winrt::Microsoft::ReactNative::EventEmitter &eventEmitter)\n : m_eventEmitter(eventEmitter) {}\n\n::_EVENT_EMITTER_USINGS_::\n\n::_EVENT_EMITTER_METHODS_::\n\n private:\n winrt::Microsoft::ReactNative::EventEmitter m_eventEmitter{nullptr};\n};`;\n\nconst baseStructTemplate = `\ntemplate<typename TUserData>\nstruct Base::_COMPONENT_NAME_:: {\n\n virtual void UpdateProps(\n const winrt::Microsoft::ReactNative::ComponentView &/*view*/,\n const winrt::com_ptr<::_COMPONENT_NAME_::Props> &newProps,\n const winrt::com_ptr<::_COMPONENT_NAME_::Props> &/*oldProps*/) noexcept {\n m_props = newProps;\n }\n\n // UpdateLayoutMetrics will only be called if this method is overridden\n virtual void UpdateLayoutMetrics(\n const winrt::Microsoft::ReactNative::ComponentView &/*view*/,\n const winrt::Microsoft::ReactNative::LayoutMetrics &/*newLayoutMetrics*/,\n const winrt::Microsoft::ReactNative::LayoutMetrics &/*oldLayoutMetrics*/) noexcept {\n }\n\n // UpdateState will only be called if this method is overridden\n virtual void UpdateState(\n const winrt::Microsoft::ReactNative::ComponentView &/*view*/,\n const winrt::Microsoft::ReactNative::IComponentState &/*newState*/) noexcept {\n }\n\n virtual void UpdateEventEmitter(const std::shared_ptr<::_COMPONENT_NAME_::EventEmitter> &eventEmitter) noexcept {\n m_eventEmitter = eventEmitter;\n }\n\n // MountChildComponentView will only be called if this method is overridden\n virtual void MountChildComponentView(const winrt::Microsoft::ReactNative::ComponentView &/*view*/,\n const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &/*args*/) noexcept {\n }\n\n // UnmountChildComponentView will only be called if this method is overridden\n virtual void UnmountChildComponentView(const winrt::Microsoft::ReactNative::ComponentView &/*view*/,\n const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &/*args*/) noexcept {\n }\n\n // Initialize will only be called if this method is overridden\n virtual void Initialize(const winrt::Microsoft::ReactNative::ComponentView &/*view*/) noexcept {\n }\n\n // CreateVisual will only be called if this method is overridden\n virtual winrt::Microsoft::UI::Composition::Visual CreateVisual(const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {\n return view.as<winrt::Microsoft::ReactNative::Composition::ComponentView>().Compositor().CreateSpriteVisual();\n }\n\n // FinalizeUpdate will only be called if this method is overridden\n virtual void FinalizeUpdate(const winrt::Microsoft::ReactNative::ComponentView &/*view*/,\n winrt::Microsoft::ReactNative::ComponentViewUpdateMask /*mask*/) noexcept {\n }\n\n::_COMPONENT_VIEW_COMMAND_HANDLERS_::\n\n ::_COMPONENT_VIEW_COMMAND_HANDLER_::\n\n const std::shared_ptr<::_COMPONENT_NAME_::EventEmitter>& EventEmitter() const { return m_eventEmitter; }\n const winrt::com_ptr<::_COMPONENT_NAME_::Props>& Props() const { return m_props; }\n\nprivate:\n winrt::com_ptr<::_COMPONENT_NAME_::Props> m_props;\n std::shared_ptr<::_COMPONENT_NAME_::EventEmitter> m_eventEmitter;\n};\n`;\n\nconst registerTemplate = `\ntemplate <typename TUserData>\nvoid Register::_COMPONENT_NAME_::NativeComponent(\n winrt::Microsoft::ReactNative::IReactPackageBuilder const &packageBuilder,\n std::function<void(const winrt::Microsoft::ReactNative::Composition::IReactCompositionViewComponentBuilder&)> builderCallback) noexcept {\n packageBuilder.as<winrt::Microsoft::ReactNative::IReactPackageBuilderFabric>().AddViewComponent(\n L\"::_COMPONENT_NAME_::\", [builderCallback](winrt::Microsoft::ReactNative::IReactViewComponentBuilder const &builder) noexcept {\n auto compBuilder = builder.as<winrt::Microsoft::ReactNative::Composition::IReactCompositionViewComponentBuilder>();\n\n builder.SetCreateProps([](winrt::Microsoft::ReactNative::ViewProps props,\n const winrt::Microsoft::ReactNative::IComponentProps& cloneFrom) noexcept {\n return winrt::make<::_COMPONENT_NAME_::Props>(props, cloneFrom); \n });\n\n builder.SetUpdatePropsHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,\n const winrt::Microsoft::ReactNative::IComponentProps &newProps,\n const winrt::Microsoft::ReactNative::IComponentProps &oldProps) noexcept {\n auto userData = view.UserData().as<TUserData>();\n userData->UpdateProps(view, newProps ? newProps.as<::_COMPONENT_NAME_::Props>() : nullptr, oldProps ? oldProps.as<::_COMPONENT_NAME_::Props>() : nullptr);\n });\n\n compBuilder.SetUpdateLayoutMetricsHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,\n const winrt::Microsoft::ReactNative::LayoutMetrics &newLayoutMetrics,\n const winrt::Microsoft::ReactNative::LayoutMetrics &oldLayoutMetrics) noexcept {\n auto userData = view.UserData().as<TUserData>();\n userData->UpdateLayoutMetrics(view, newLayoutMetrics, oldLayoutMetrics);\n });\n\n builder.SetUpdateEventEmitterHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,\n const winrt::Microsoft::ReactNative::EventEmitter &eventEmitter) noexcept {\n auto userData = view.UserData().as<TUserData>();\n userData->UpdateEventEmitter(std::make_shared<::_COMPONENT_NAME_::EventEmitter>(eventEmitter));\n });\n\n if constexpr (&TUserData::FinalizeUpdate != &Base::_COMPONENT_NAME_::<TUserData>::FinalizeUpdate) {\n builder.SetFinalizeUpdateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,\n winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept {\n auto userData = view.UserData().as<TUserData>();\n userData->FinalizeUpdate(view, mask);\n });\n } \n\n if constexpr (&TUserData::UpdateState != &Base::_COMPONENT_NAME_::<TUserData>::UpdateState) {\n builder.SetUpdateStateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,\n const winrt::Microsoft::ReactNative::IComponentState &newState) noexcept {\n auto userData = view.UserData().as<TUserData>();\n userData->member(view, newState);\n });\n }\n\n::_REGISTER_CUSTOM_COMMAND_HANDLER_::\n\n if constexpr (&TUserData::MountChildComponentView != &Base::_COMPONENT_NAME_::<TUserData>::MountChildComponentView) {\n builder.SetMountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,\n const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &args) noexcept {\n auto userData = view.UserData().as<TUserData>();\n return userData->MountChildComponentView(view, args);\n });\n }\n\n if constexpr (&TUserData::UnmountChildComponentView != &Base::_COMPONENT_NAME_::<TUserData>::UnmountChildComponentView) {\n builder.SetUnmountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,\n const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &args) noexcept {\n auto userData = view.UserData().as<TUserData>();\n return userData->UnmountChildComponentView(view, args);\n });\n }\n\n compBuilder.SetViewComponentViewInitializer([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {\n auto userData = winrt::make_self<TUserData>();\n if constexpr (&TUserData::Initialize != &Base::_COMPONENT_NAME_::<TUserData>::Initialize) {\n userData->Initialize(view);\n }\n view.UserData(*userData);\n });\n\n if constexpr (&TUserData::CreateVisual != &Base::_COMPONENT_NAME_::<TUserData>::CreateVisual) {\n compBuilder.SetCreateVisualHandler([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {\n auto userData = view.UserData().as<TUserData>();\n return userData->CreateVisual(view);\n });\n }\n\n // Allow app to further customize the builder\n if (builderCallback) {\n builderCallback(compBuilder);\n }\n });\n}\n`;\n\nconst fileTemplate = `\n${headerTemplate}\n\n#ifdef RNW_NEW_ARCH\n\nnamespace ::_NAMESPACE_:: {\n\n::_COMPONENT_PROP_OBJECT_TYPES_::\n::_COMPONENT_PROP_TYPES_::\n\n::_COMPONENT_EVENT_EMITTER_::\n\n::_BASE_COMPONENT_STRUCT_::\n\n::_COMPONENT_REGISTRATION_::\n} // namespace ::_NAMESPACE_::\n\n#endif // #ifdef RNW_NEW_ARCH\n`;\n\nfunction capitalizeFirstLetter(s: string) {\n return s.charAt(0).toUpperCase() + s.slice(1);\n}\n\nexport function createComponentGenerator({\n namespace,\n cppStringType,\n}: {\n namespace: string;\n cppStringType: CppStringTypes;\n}) {\n return (\n _libraryName: string,\n schema: SchemaType,\n _moduleSpecName: string,\n ): FilesOutput => {\n const files = new Map<string, string>();\n\n const cppCodegenOptions = {cppStringType};\n\n for (const componentName of Object.keys(schema.modules)) {\n const component = schema.modules[componentName];\n setPreferredModuleName(componentName);\n\n if (component.type === 'Component') {\n console.log(`Generating ${componentName}.g.h`);\n\n const componentShape = component.components[componentName];\n\n componentShape.extendsProps.forEach(propsBaseType => {\n if (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n propsBaseType.type !== 'ReactNativeBuiltInType' ||\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n propsBaseType.knownTypeName !== 'ReactNativeCoreViewProps'\n ) {\n throw new Error(\n 'Currently only supports props extending from ViewProps',\n );\n }\n });\n\n // Props\n const propObjectAliases: AliasMap<\n ObjectTypeAnnotation<PropTypeAnnotation>\n > = {types: {}, jobs: []};\n const propsName = `${componentName}Props`;\n const propsFields = componentShape.props\n .map(prop => {\n const propType = translateComponentPropsFieldType(\n prop.typeAnnotation,\n propObjectAliases,\n `${propsName}_${prop.name}`,\n cppCodegenOptions,\n );\n return ` REACT_FIELD(${prop.name})\\n ${\n prop.optional && !propType.alreadySupportsOptionalOrHasDefault\n ? `std::optional<${propType.type}>`\n : propType.type\n } ${prop.name}${propType.initializer};\\n`;\n })\n .join('\\n');\n\n const propInitializers = componentShape.props\n .map(prop => {\n return ` ${prop.name} = cloneFromProps->${prop.name};`;\n })\n .join('\\n');\n\n const propObjectTypes = propObjectAliases.jobs\n .map(propObjectTypeName => {\n const propObjectType = propObjectAliases.types[propObjectTypeName]!;\n const propsObjectFields = propObjectType.properties\n .map(property => {\n const propType = translateComponentPropsFieldType(\n property.typeAnnotation,\n propObjectAliases,\n `${propsName}_${property.name}`,\n cppCodegenOptions,\n );\n return ` REACT_FIELD(${property.name})\\n ${\n property.optional &&\n !propType.alreadySupportsOptionalOrHasDefault\n ? `std::optional<${propType.type}>`\n : propType.type\n } ${property.name}${propType.initializer};\\n`;\n })\n .join('\\n');\n\n return propsObjectTemplate\n .replace(\n /::_OBJECT_NAME_::/g,\n getAliasCppName(propObjectTypeName),\n )\n .replace(/::_OBJECT_FIELDS_::/g, propsObjectFields);\n })\n .join('\\n');\n\n // Events\n const eventObjectAliases: AliasMap<\n ObjectTypeAnnotation<EventTypeAnnotation>\n > = {types: {}, jobs: []};\n const eventEmitterName = `${componentName}EventEmitter`;\n const eventEmitterMethods = componentShape.events\n .filter(event => event.typeAnnotation.argument)\n .map(event => {\n if (event.typeAnnotation.argument?.baseTypes) {\n throw new Error(\n 'Events with base type arguments not currently supported',\n );\n }\n\n // Called to collect the eventObjectAliases\n translateComponentEventType(\n event.typeAnnotation.argument!,\n eventObjectAliases,\n `${event.name}`,\n cppCodegenOptions,\n );\n\n // onSomething -> something\n let eventNameLower = event.name.replace('on', '');\n eventNameLower =\n eventNameLower[0].toLowerCase() + eventNameLower.slice(1);\n\n return eventEmitterMethodTemplate\n .replace(/::_EVENT_NAME_::/g, event.name)\n .replace(/::_EVENT_NAME_NO_ON_::/g, eventNameLower)\n .replace(\n /::_EVENT_OBJECT_TYPE_::/g,\n event.name.replace('on', 'On'),\n );\n })\n .join('\\n\\n');\n\n const eventObjects = eventObjectAliases.jobs\n .map(eventObjectTypeName => {\n const eventObjectType =\n eventObjectAliases.types[eventObjectTypeName]!;\n const eventObjectFields = eventObjectType.properties\n .map(property => {\n const eventPropType = translateComponentEventType(\n property.typeAnnotation,\n eventObjectAliases,\n eventObjectTypeName,\n cppCodegenOptions,\n );\n return ` REACT_FIELD(${property.name})\\n ${\n property.optional &&\n !eventPropType.alreadySupportsOptionalOrHasDefault\n ? `std::optional<${eventPropType.type}>`\n : eventPropType.type\n } ${property.name}${eventPropType.initializer};\\n`;\n })\n .join('\\n');\n return eventsObjectTemplate\n .replace(\n /::_OBJECT_NAME_::/g,\n `${componentName}_${eventObjectTypeName.replace('on', 'On')}`,\n )\n .replace(/::_OBJECT_FIELDS_::/g, eventObjectFields);\n })\n .join('\\n');\n\n const eventObjectUsings = eventObjectAliases.jobs\n .map(eventObjectTypeName => {\n return ` using ${eventObjectTypeName.replace(\n 'on',\n 'On',\n )} = ${componentName}_${eventObjectTypeName.replace('on', 'On')};`;\n })\n .join('\\n');\n\n const eventEmitter = eventEmitterTemplate\n .replace(/::_COMPONENT_EVENT_OBJECT_TYPES_::/g, eventObjects)\n .replace(/::_EVENT_EMITTER_METHODS_::/g, eventEmitterMethods)\n .replace(/::_EVENT_EMITTER_USINGS_::/g, eventObjectUsings);\n\n // Commands\n const commandAliases: AliasMap<\n ObjectTypeAnnotation<CommandParamTypeAnnotation>\n > = {types: {}, jobs: []};\n const hasAnyCommands = componentShape.commands.length !== 0;\n const commandHandlers = hasAnyCommands\n ? componentShape.commands\n .map(command => {\n const commandArgs = command.typeAnnotation.params\n .map(param => {\n const commandArgType = translateCommandParamType(\n param.typeAnnotation,\n commandAliases,\n `${componentName}_${command.name}`,\n cppCodegenOptions,\n );\n return `${\n param.optional &&\n !commandArgType.alreadySupportsOptionalOrHasDefault\n ? `std::optional<${commandArgType.type}>`\n : commandArgType.type\n } ${param.name}`;\n })\n .join(', ');\n\n return ` // You must provide an implementation of this method to handle the \"${\n command.name\n }\" command\n virtual void Handle${capitalizeFirstLetter(\n command.name,\n )}Command(${commandArgs}) noexcept = 0;`;\n })\n .join('\\n\\n')\n : '';\n\n const commandHandler = hasAnyCommands\n ? `void HandleCommand(const winrt::Microsoft::ReactNative::ComponentView &view, const winrt::Microsoft::ReactNative::HandleCommandArgs& args) noexcept {\n auto userData = view.UserData().as<TUserData>();\n auto commandName = args.CommandName();\n${componentShape.commands\n .map(command => {\n const commaSeparatedCommandArgs = command.typeAnnotation.params\n .map(param => param.name)\n .join(', ');\n return ` if (commandName == L\"${command.name}\") {\n${\n command.typeAnnotation.params.length !== 0\n ? ` ${command.typeAnnotation.params\n .map(param => {\n const commandArgType = translateCommandParamType(\n param.typeAnnotation,\n commandAliases,\n `${componentName}_${command.name}`,\n cppCodegenOptions,\n );\n return `${\n param.optional &&\n !commandArgType.alreadySupportsOptionalOrHasDefault\n ? `std::optional<${commandArgType.type}>`\n : commandArgType.type\n } ${param.name};`;\n })\n .join('\\n')}\n winrt::Microsoft::ReactNative::ReadArgs(args.CommandArgs(), ${commaSeparatedCommandArgs});`\n : ''\n}\n userData->Handle${capitalizeFirstLetter(\n command.name,\n )}Command(${commaSeparatedCommandArgs});\n return;\n }`;\n })\n .join('\\n\\n')}\n }`\n : '';\n\n const registerCommandHandler = hasAnyCommands\n ? ` builder.SetCustomCommandHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,\n const winrt::Microsoft::ReactNative::HandleCommandArgs& args) noexcept {\n auto userData = view.UserData().as<TUserData>();\n userData->HandleCommand(view, args);\n });`\n : '';\n\n const baseType = baseStructTemplate\n .replace(/::_COMPONENT_VIEW_COMMAND_HANDLERS_::/g, commandHandlers)\n .replace(/::_COMPONENT_VIEW_COMMAND_HANDLER_::/g, commandHandler);\n\n // Registration\n const componentRegistration = registerTemplate.replace(\n /::_REGISTER_CUSTOM_COMMAND_HANDLER_::/g,\n registerCommandHandler,\n );\n\n // Final output\n const replaceContent = function (template: string): string {\n return template\n .replace(/::_COMPONENT_PROP_OBJECT_TYPES_::/g, propObjectTypes)\n .replace(/::_COMPONENT_PROP_TYPES_::/g, propsTemplate)\n .replace(/::_COMPONENT_EVENT_EMITTER_::/g, eventEmitter)\n .replace(/::_BASE_COMPONENT_STRUCT_::/g, baseType)\n .replace(/::_COMPONENT_REGISTRATION_::/g, componentRegistration)\n .replace(/::_EVENT_EMITTER_NAME_::/g, eventEmitterName)\n .replace(/::_PROPS_NAME_::/g, propsName)\n .replace(/::_COMPONENT_NAME_::/g, componentName)\n .replace(/::_PROP_INITIALIZERS_::/g, propInitializers)\n .replace(/::_PROPS_FIELDS_::/g, propsFields)\n .replace(/::_NAMESPACE_::/g, namespace)\n .replace(/\\n\\n\\n+/g, '\\n\\n');\n };\n\n files.set(`${componentName}.g.h`, replaceContent(fileTemplate));\n }\n }\n\n return files;\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"GenerateComponentWindows.js","sourceRoot":"","sources":["../../src/generators/GenerateComponentWindows.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,CAAC;;;AASb,mDAAwE;AACxE,uDAI2B;AAQ3B,MAAM,cAAc,GAAG;;;;;;;;;;;;;8BAaO,CAAC;AAE/B,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;GAiBnB,CAAC;AAEJ,MAAM,mBAAmB,GAAG;;;CAG3B,CAAC;AACF,MAAM,oBAAoB,GAAG;;;CAG5B,CAAC;AAEF,MAAM,0BAA0B,GAAG;;;;IAI/B,CAAC;AAEL,MAAM,oBAAoB,GAAG;;;;;;;;;;;;GAY1B,CAAC;AAEJ,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+D1B,CAAC;AAEF,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyFxB,CAAC;AAEF,MAAM,YAAY,GAAG;EACnB,cAAc;;;;;;;;;;;;;;;;;CAiBf,CAAC;AAEF,SAAS,qBAAqB,CAAC,CAAS;IACtC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,SAAgB,wBAAwB,CAAC,EACvC,SAAS,EACT,aAAa,GAId;IACC,OAAO,CACL,YAAoB,EACpB,MAAkB,EAClB,eAAuB,EACV,EAAE;QACf,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;QAExC,MAAM,iBAAiB,GAAG,EAAC,aAAa,EAAC,CAAC;QAE1C,KAAK,MAAM,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YACvD,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAChD,IAAA,sCAAsB,EAAC,aAAa,CAAC,CAAC;YAEtC,IAAI,SAAS,CAAC,IAAI,KAAK,WAAW,EAAE;gBAClC,OAAO,CAAC,GAAG,CAAC,cAAc,aAAa,MAAM,CAAC,CAAC;gBAE/C,MAAM,cAAc,GAAG,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;gBAE3D,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;oBAClD;oBACE,uEAAuE;oBACvE,aAAa,CAAC,IAAI,KAAK,wBAAwB;wBAC/C,uEAAuE;wBACvE,aAAa,CAAC,aAAa,KAAK,0BAA0B,EAC1D;wBACA,MAAM,IAAI,KAAK,CACb,wDAAwD,CACzD,CAAC;qBACH;gBACH,CAAC,CAAC,CAAC;gBAEH,QAAQ;gBACR,MAAM,iBAAiB,GAEnB,EAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAC,CAAC;gBAC1B,MAAM,SAAS,GAAG,GAAG,aAAa,OAAO,CAAC;gBAC1C,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK;qBACrC,GAAG,CAAC,IAAI,CAAC,EAAE;oBACV,MAAM,QAAQ,GAAG,IAAA,kDAAgC,EAC/C,IAAI,CAAC,cAAc,EACnB,iBAAiB,EACjB,GAAG,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,EAC3B,iBAAiB,CAClB,CAAC;oBACF,OAAO,iBAAiB,IAAI,CAAC,IAAI,QAC/B,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,mCAAmC;wBAC5D,CAAC,CAAC,iBAAiB,QAAQ,CAAC,IAAI,GAAG;wBACnC,CAAC,CAAC,QAAQ,CAAC,IACf,IAAI,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,WAAW,KAAK,CAAC;gBAC5C,CAAC,CAAC;qBACD,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEd,MAAM,gBAAgB,GAAG,cAAc,CAAC,KAAK;qBAC1C,GAAG,CAAC,IAAI,CAAC,EAAE;oBACV,OAAO,UAAU,IAAI,CAAC,IAAI,sBAAsB,IAAI,CAAC,IAAI,GAAG,CAAC;gBAC/D,CAAC,CAAC;qBACD,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEd,MAAM,eAAe,GAAG,iBAAiB,CAAC,IAAI;qBAC3C,GAAG,CAAC,kBAAkB,CAAC,EAAE;oBACxB,MAAM,cAAc,GAAG,iBAAiB,CAAC,KAAK,CAAC,kBAAkB,CAAE,CAAC;oBACpE,MAAM,iBAAiB,GAAG,cAAc,CAAC,UAAU;yBAChD,GAAG,CAAC,QAAQ,CAAC,EAAE;wBACd,MAAM,QAAQ,GAAG,IAAA,kDAAgC,EAC/C,QAAQ,CAAC,cAAc,EACvB,iBAAiB,EACjB,GAAG,SAAS,IAAI,QAAQ,CAAC,IAAI,EAAE,EAC/B,iBAAiB,CAClB,CAAC;wBACF,OAAO,iBAAiB,QAAQ,CAAC,IAAI,QACnC,QAAQ,CAAC,QAAQ;4BACjB,CAAC,QAAQ,CAAC,mCAAmC;4BAC3C,CAAC,CAAC,iBAAiB,QAAQ,CAAC,IAAI,GAAG;4BACnC,CAAC,CAAC,QAAQ,CAAC,IACf,IAAI,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,WAAW,KAAK,CAAC;oBAChD,CAAC,CAAC;yBACD,IAAI,CAAC,IAAI,CAAC,CAAC;oBAEd,OAAO,mBAAmB;yBACvB,OAAO,CACN,oBAAoB,EACpB,IAAA,+BAAe,EAAC,kBAAkB,CAAC,CACpC;yBACA,OAAO,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAC;gBACxD,CAAC,CAAC;qBACD,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEd,SAAS;gBACT,MAAM,kBAAkB,GAEpB,EAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAC,CAAC;gBAC1B,MAAM,gBAAgB,GAAG,GAAG,aAAa,cAAc,CAAC;gBACxD,MAAM,mBAAmB,GAAG,cAAc,CAAC,MAAM;qBAC9C,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;qBAC9C,GAAG,CAAC,KAAK,CAAC,EAAE;;oBACX,IAAI,MAAA,KAAK,CAAC,cAAc,CAAC,QAAQ,0CAAE,SAAS,EAAE;wBAC5C,MAAM,IAAI,KAAK,CACb,yDAAyD,CAC1D,CAAC;qBACH;oBAED,2CAA2C;oBAC3C,IAAA,6CAA2B,EACzB,KAAK,CAAC,cAAc,CAAC,QAAS,EAC9B,kBAAkB,EAClB,GAAG,KAAK,CAAC,IAAI,EAAE,EACf,iBAAiB,CAClB,CAAC;oBAEF,2BAA2B;oBAC3B,IAAI,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBAClD,cAAc;wBACZ,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAE5D,OAAO,0BAA0B;yBAC9B,OAAO,CAAC,mBAAmB,EAAE,KAAK,CAAC,IAAI,CAAC;yBACxC,OAAO,CAAC,yBAAyB,EAAE,cAAc,CAAC;yBAClD,OAAO,CACN,0BAA0B,EAC1B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAC/B,CAAC;gBACN,CAAC,CAAC;qBACD,IAAI,CAAC,MAAM,CAAC,CAAC;gBAEhB,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI;qBACzC,GAAG,CAAC,mBAAmB,CAAC,EAAE;oBACzB,MAAM,eAAe,GACnB,kBAAkB,CAAC,KAAK,CAAC,mBAAmB,CAAE,CAAC;oBACjD,MAAM,iBAAiB,GAAG,eAAe,CAAC,UAAU;yBACjD,GAAG,CAAC,QAAQ,CAAC,EAAE;wBACd,MAAM,aAAa,GAAG,IAAA,6CAA2B,EAC/C,QAAQ,CAAC,cAAc,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,CAClB,CAAC;wBACF,OAAO,iBAAiB,QAAQ,CAAC,IAAI,QACnC,QAAQ,CAAC,QAAQ;4BACjB,CAAC,aAAa,CAAC,mCAAmC;4BAChD,CAAC,CAAC,iBAAiB,aAAa,CAAC,IAAI,GAAG;4BACxC,CAAC,CAAC,aAAa,CAAC,IACpB,IAAI,QAAQ,CAAC,IAAI,GAAG,aAAa,CAAC,WAAW,KAAK,CAAC;oBACrD,CAAC,CAAC;yBACD,IAAI,CAAC,IAAI,CAAC,CAAC;oBACd,OAAO,oBAAoB;yBACxB,OAAO,CACN,oBAAoB,EACpB,GAAG,aAAa,IAAI,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAC9D;yBACA,OAAO,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAC;gBACxD,CAAC,CAAC;qBACD,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEd,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,IAAI;qBAC9C,GAAG,CAAC,mBAAmB,CAAC,EAAE;oBACzB,OAAO,WAAW,mBAAmB,CAAC,OAAO,CAC3C,IAAI,EACJ,IAAI,CACL,MAAM,aAAa,IAAI,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;gBACrE,CAAC,CAAC;qBACD,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEd,MAAM,YAAY,GAAG,oBAAoB;qBACtC,OAAO,CAAC,qCAAqC,EAAE,YAAY,CAAC;qBAC5D,OAAO,CAAC,8BAA8B,EAAE,mBAAmB,CAAC;qBAC5D,OAAO,CAAC,6BAA6B,EAAE,iBAAiB,CAAC,CAAC;gBAE7D,WAAW;gBACX,MAAM,cAAc,GAEhB,EAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAC,CAAC;gBAC1B,MAAM,cAAc,GAAG,cAAc,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;gBAC5D,MAAM,eAAe,GAAG,cAAc;oBACpC,CAAC,CAAC,cAAc,CAAC,QAAQ;yBACpB,GAAG,CAAC,OAAO,CAAC,EAAE;wBACb,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM;6BAC9C,GAAG,CAAC,KAAK,CAAC,EAAE;4BACX,MAAM,cAAc,GAAG,IAAA,2CAAyB,EAC9C,KAAK,CAAC,cAAc,EACpB,cAAc,EACd,GAAG,aAAa,IAAI,OAAO,CAAC,IAAI,EAAE,EAClC,iBAAiB,CAClB,CAAC;4BACF,OAAO,GACL,KAAK,CAAC,QAAQ;gCACd,CAAC,cAAc,CAAC,mCAAmC;gCACjD,CAAC,CAAC,iBAAiB,cAAc,CAAC,IAAI,GAAG;gCACzC,CAAC,CAAC,cAAc,CAAC,IACrB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;wBACnB,CAAC,CAAC;6BACD,IAAI,CAAC,IAAI,CAAC,CAAC;wBAEd,OAAO,yEACL,OAAO,CAAC,IACV;uBACO,qBAAqB,CACxC,OAAO,CAAC,IAAI,CACb,WAAW,WAAW,iBAAiB,CAAC;oBAC7B,CAAC,CAAC;yBACD,IAAI,CAAC,MAAM,CAAC;oBACjB,CAAC,CAAC,EAAE,CAAC;gBAEP,MAAM,cAAc,GAAG,cAAc;oBACnC,CAAC,CAAC;;;EAGV,cAAc,CAAC,QAAQ;yBACtB,GAAG,CAAC,OAAO,CAAC,EAAE;wBACb,MAAM,yBAAyB,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM;6BAC5D,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;6BACxB,IAAI,CAAC,IAAI,CAAC,CAAC;wBACd,OAAO,4BAA4B,OAAO,CAAC,IAAI;EAEjD,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;4BACxC,CAAC,CAAC,SAAS,OAAO,CAAC,cAAc,CAAC,MAAM;iCACnC,GAAG,CAAC,KAAK,CAAC,EAAE;gCACX,MAAM,cAAc,GAAG,IAAA,2CAAyB,EAC9C,KAAK,CAAC,cAAc,EACpB,cAAc,EACd,GAAG,aAAa,IAAI,OAAO,CAAC,IAAI,EAAE,EAClC,iBAAiB,CAClB,CAAC;gCACF,OAAO,GACL,KAAK,CAAC,QAAQ;oCACd,CAAC,cAAc,CAAC,mCAAmC;oCACjD,CAAC,CAAC,iBAAiB,cAAc,CAAC,IAAI,GAAG;oCACzC,CAAC,CAAC,cAAc,CAAC,IACrB,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC;4BACpB,CAAC,CAAC;iCACD,IAAI,CAAC,IAAI,CAAC;oEACiD,yBAAyB,IAAI;4BAC7F,CAAC,CAAC,EACN;wBACwB,qBAAqB,CACrC,OAAO,CAAC,IAAI,CACb,WAAW,yBAAyB;;MAErC,CAAC;oBACL,CAAC,CAAC;yBACD,IAAI,CAAC,MAAM,CAAC;IACX;oBACM,CAAC,CAAC,EAAE,CAAC;gBAEP,MAAM,sBAAsB,GAAG,cAAc;oBAC3C,CAAC,CAAC;;;;YAIA;oBACF,CAAC,CAAC,EAAE,CAAC;gBAEP,MAAM,QAAQ,GAAG,kBAAkB;qBAChC,OAAO,CAAC,wCAAwC,EAAE,eAAe,CAAC;qBAClE,OAAO,CAAC,uCAAuC,EAAE,cAAc,CAAC,CAAC;gBAEpE,eAAe;gBACf,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,OAAO,CACpD,wCAAwC,EACxC,sBAAsB,CACvB,CAAC;gBAEF,eAAe;gBACf,MAAM,cAAc,GAAG,UAAU,QAAgB;oBAC/C,OAAO,QAAQ;yBACZ,OAAO,CAAC,oCAAoC,EAAE,eAAe,CAAC;yBAC9D,OAAO,CAAC,6BAA6B,EAAE,aAAa,CAAC;yBACrD,OAAO,CAAC,gCAAgC,EAAE,YAAY,CAAC;yBACvD,OAAO,CAAC,8BAA8B,EAAE,QAAQ,CAAC;yBACjD,OAAO,CAAC,+BAA+B,EAAE,qBAAqB,CAAC;yBAC/D,OAAO,CAAC,2BAA2B,EAAE,gBAAgB,CAAC;yBACtD,OAAO,CAAC,mBAAmB,EAAE,SAAS,CAAC;yBACvC,OAAO,CAAC,uBAAuB,EAAE,aAAa,CAAC;yBAC/C,OAAO,CAAC,0BAA0B,EAAE,gBAAgB,CAAC;yBACrD,OAAO,CAAC,qBAAqB,EAAE,WAAW,CAAC;yBAC3C,OAAO,CAAC,kBAAkB,EAAE,SAAS,CAAC;yBACtC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBACjC,CAAC,CAAC;gBAEF,KAAK,CAAC,GAAG,CAAC,GAAG,aAAa,MAAM,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;aACjE;SACF;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC;AAnSD,4DAmSC","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\n'use strict';\n\nimport type {\n SchemaType,\n EventTypeAnnotation,\n PropTypeAnnotation,\n ObjectTypeAnnotation,\n CommandParamTypeAnnotation,\n} from '@react-native/codegen/lib/CodegenSchema';\nimport {getAliasCppName, setPreferredModuleName} from './AliasManaging';\nimport {\n translateComponentPropsFieldType,\n translateComponentEventType,\n translateCommandParamType,\n} from './PropObjectTypes';\nimport type {CppStringTypes} from './ObjectTypes';\nimport type {AliasMap} from './AliasManaging';\n\nexport type {CppStringTypes} from './ObjectTypes';\n\ntype FilesOutput = Map<string, string>;\n\nconst headerTemplate = `/*\n * This file is auto-generated from ::_COMPONENT_NAME_::NativeComponent spec file in flow / TypeScript.\n */\n// clang-format off\n#pragma once\n\n#include <NativeModules.h>\n\n#ifdef RNW_NEW_ARCH\n#include <JSValueComposition.h>\n\n#include <winrt/Microsoft.ReactNative.Composition.h>\n#include <winrt/Microsoft.UI.Composition.h>\n#endif // #ifdef RNW_NEW_ARCH`;\n\nconst propsTemplate = `REACT_STRUCT(::_PROPS_NAME_::)\nstruct ::_PROPS_NAME_:: : winrt::implements<::_PROPS_NAME_::, winrt::Microsoft::ReactNative::IComponentProps> {\n ::_PROPS_NAME_::(winrt::Microsoft::ReactNative::ViewProps props, const winrt::Microsoft::ReactNative::IComponentProps& cloneFrom)\n : ViewProps(props)\n {\n if (cloneFrom) {\n auto cloneFromProps = cloneFrom.as<::_PROPS_NAME_::>();\n::_PROP_INITIALIZERS_:: \n }\n }\n\n void SetProp(uint32_t hash, winrt::hstring propName, winrt::Microsoft::ReactNative::IJSValueReader value) noexcept {\n winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this);\n }\n\n::_PROPS_FIELDS_::\n const winrt::Microsoft::ReactNative::ViewProps ViewProps;\n};`;\n\nconst propsObjectTemplate = `REACT_STRUCT(::_OBJECT_NAME_::)\nstruct ::_OBJECT_NAME_:: {\n::_OBJECT_FIELDS_::};\n`;\nconst eventsObjectTemplate = `REACT_STRUCT(::_OBJECT_NAME_::)\nstruct ::_OBJECT_NAME_:: {\n::_OBJECT_FIELDS_::};\n`;\n\nconst eventEmitterMethodTemplate = ` void ::_EVENT_NAME_::(::_EVENT_OBJECT_TYPE_:: &value) const {\n m_eventEmitter.DispatchEvent(L\"::_EVENT_NAME_NO_ON_::\", [value](const winrt::Microsoft::ReactNative::IJSValueWriter writer) {\n winrt::Microsoft::ReactNative::WriteValue(writer, value);\n });\n }`;\n\nconst eventEmitterTemplate = `::_COMPONENT_EVENT_OBJECT_TYPES_::\n\nstruct ::_EVENT_EMITTER_NAME_:: {\n ::_EVENT_EMITTER_NAME_::(const winrt::Microsoft::ReactNative::EventEmitter &eventEmitter)\n : m_eventEmitter(eventEmitter) {}\n\n::_EVENT_EMITTER_USINGS_::\n\n::_EVENT_EMITTER_METHODS_::\n\n private:\n winrt::Microsoft::ReactNative::EventEmitter m_eventEmitter{nullptr};\n};`;\n\nconst baseStructTemplate = `\ntemplate<typename TUserData>\nstruct Base::_COMPONENT_NAME_:: {\n\n virtual void UpdateProps(\n const winrt::Microsoft::ReactNative::ComponentView &/*view*/,\n const winrt::com_ptr<::_COMPONENT_NAME_::Props> &newProps,\n const winrt::com_ptr<::_COMPONENT_NAME_::Props> &/*oldProps*/) noexcept {\n m_props = newProps;\n }\n\n // UpdateLayoutMetrics will only be called if this method is overridden\n virtual void UpdateLayoutMetrics(\n const winrt::Microsoft::ReactNative::ComponentView &/*view*/,\n const winrt::Microsoft::ReactNative::LayoutMetrics &/*newLayoutMetrics*/,\n const winrt::Microsoft::ReactNative::LayoutMetrics &/*oldLayoutMetrics*/) noexcept {\n }\n\n // UpdateState will only be called if this method is overridden\n virtual void UpdateState(\n const winrt::Microsoft::ReactNative::ComponentView &/*view*/,\n const winrt::Microsoft::ReactNative::IComponentState &/*newState*/) noexcept {\n }\n\n virtual void UpdateEventEmitter(const std::shared_ptr<::_COMPONENT_NAME_::EventEmitter> &eventEmitter) noexcept {\n m_eventEmitter = eventEmitter;\n }\n\n // MountChildComponentView will only be called if this method is overridden\n virtual void MountChildComponentView(const winrt::Microsoft::ReactNative::ComponentView &/*view*/,\n const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &/*args*/) noexcept {\n }\n\n // UnmountChildComponentView will only be called if this method is overridden\n virtual void UnmountChildComponentView(const winrt::Microsoft::ReactNative::ComponentView &/*view*/,\n const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &/*args*/) noexcept {\n }\n\n // Initialize will only be called if this method is overridden\n virtual void Initialize(const winrt::Microsoft::ReactNative::ComponentView &/*view*/) noexcept {\n }\n\n // CreateVisual will only be called if this method is overridden\n virtual winrt::Microsoft::UI::Composition::Visual CreateVisual(const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {\n return view.as<winrt::Microsoft::ReactNative::Composition::ComponentView>().Compositor().CreateSpriteVisual();\n }\n\n // FinalizeUpdate will only be called if this method is overridden\n virtual void FinalizeUpdate(const winrt::Microsoft::ReactNative::ComponentView &/*view*/,\n winrt::Microsoft::ReactNative::ComponentViewUpdateMask /*mask*/) noexcept {\n }\n\n::_COMPONENT_VIEW_COMMAND_HANDLERS_::\n\n ::_COMPONENT_VIEW_COMMAND_HANDLER_::\n\n const std::shared_ptr<::_COMPONENT_NAME_::EventEmitter>& EventEmitter() const { return m_eventEmitter; }\n const winrt::com_ptr<::_COMPONENT_NAME_::Props>& Props() const { return m_props; }\n\nprivate:\n winrt::com_ptr<::_COMPONENT_NAME_::Props> m_props;\n std::shared_ptr<::_COMPONENT_NAME_::EventEmitter> m_eventEmitter;\n};\n`;\n\nconst registerTemplate = `\ntemplate <typename TUserData>\nvoid Register::_COMPONENT_NAME_::NativeComponent(\n winrt::Microsoft::ReactNative::IReactPackageBuilder const &packageBuilder,\n std::function<void(const winrt::Microsoft::ReactNative::Composition::IReactCompositionViewComponentBuilder&)> builderCallback) noexcept {\n packageBuilder.as<winrt::Microsoft::ReactNative::IReactPackageBuilderFabric>().AddViewComponent(\n L\"::_COMPONENT_NAME_::\", [builderCallback](winrt::Microsoft::ReactNative::IReactViewComponentBuilder const &builder) noexcept {\n auto compBuilder = builder.as<winrt::Microsoft::ReactNative::Composition::IReactCompositionViewComponentBuilder>();\n\n builder.SetCreateProps([](winrt::Microsoft::ReactNative::ViewProps props,\n const winrt::Microsoft::ReactNative::IComponentProps& cloneFrom) noexcept {\n return winrt::make<::_COMPONENT_NAME_::Props>(props, cloneFrom); \n });\n\n builder.SetUpdatePropsHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,\n const winrt::Microsoft::ReactNative::IComponentProps &newProps,\n const winrt::Microsoft::ReactNative::IComponentProps &oldProps) noexcept {\n auto userData = view.UserData().as<TUserData>();\n userData->UpdateProps(view, newProps ? newProps.as<::_COMPONENT_NAME_::Props>() : nullptr, oldProps ? oldProps.as<::_COMPONENT_NAME_::Props>() : nullptr);\n });\n\n compBuilder.SetUpdateLayoutMetricsHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,\n const winrt::Microsoft::ReactNative::LayoutMetrics &newLayoutMetrics,\n const winrt::Microsoft::ReactNative::LayoutMetrics &oldLayoutMetrics) noexcept {\n auto userData = view.UserData().as<TUserData>();\n userData->UpdateLayoutMetrics(view, newLayoutMetrics, oldLayoutMetrics);\n });\n\n builder.SetUpdateEventEmitterHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,\n const winrt::Microsoft::ReactNative::EventEmitter &eventEmitter) noexcept {\n auto userData = view.UserData().as<TUserData>();\n userData->UpdateEventEmitter(std::make_shared<::_COMPONENT_NAME_::EventEmitter>(eventEmitter));\n });\n\n if constexpr (&TUserData::FinalizeUpdate != &Base::_COMPONENT_NAME_::<TUserData>::FinalizeUpdate) {\n builder.SetFinalizeUpdateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,\n winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept {\n auto userData = view.UserData().as<TUserData>();\n userData->FinalizeUpdate(view, mask);\n });\n } \n\n if constexpr (&TUserData::UpdateState != &Base::_COMPONENT_NAME_::<TUserData>::UpdateState) {\n builder.SetUpdateStateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,\n const winrt::Microsoft::ReactNative::IComponentState &newState) noexcept {\n auto userData = view.UserData().as<TUserData>();\n userData->UpdateState(view, newState);\n });\n }\n\n::_REGISTER_CUSTOM_COMMAND_HANDLER_::\n\n if constexpr (&TUserData::MountChildComponentView != &Base::_COMPONENT_NAME_::<TUserData>::MountChildComponentView) {\n builder.SetMountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,\n const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &args) noexcept {\n auto userData = view.UserData().as<TUserData>();\n return userData->MountChildComponentView(view, args);\n });\n }\n\n if constexpr (&TUserData::UnmountChildComponentView != &Base::_COMPONENT_NAME_::<TUserData>::UnmountChildComponentView) {\n builder.SetUnmountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,\n const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &args) noexcept {\n auto userData = view.UserData().as<TUserData>();\n return userData->UnmountChildComponentView(view, args);\n });\n }\n\n compBuilder.SetViewComponentViewInitializer([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {\n auto userData = winrt::make_self<TUserData>();\n if constexpr (&TUserData::Initialize != &Base::_COMPONENT_NAME_::<TUserData>::Initialize) {\n userData->Initialize(view);\n }\n view.UserData(*userData);\n });\n\n if constexpr (&TUserData::CreateVisual != &Base::_COMPONENT_NAME_::<TUserData>::CreateVisual) {\n compBuilder.SetCreateVisualHandler([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {\n auto userData = view.UserData().as<TUserData>();\n return userData->CreateVisual(view);\n });\n }\n\n // Allow app to further customize the builder\n if (builderCallback) {\n builderCallback(compBuilder);\n }\n });\n}\n`;\n\nconst fileTemplate = `\n${headerTemplate}\n\n#ifdef RNW_NEW_ARCH\n\nnamespace ::_NAMESPACE_:: {\n\n::_COMPONENT_PROP_OBJECT_TYPES_::\n::_COMPONENT_PROP_TYPES_::\n\n::_COMPONENT_EVENT_EMITTER_::\n\n::_BASE_COMPONENT_STRUCT_::\n\n::_COMPONENT_REGISTRATION_::\n} // namespace ::_NAMESPACE_::\n\n#endif // #ifdef RNW_NEW_ARCH\n`;\n\nfunction capitalizeFirstLetter(s: string) {\n return s.charAt(0).toUpperCase() + s.slice(1);\n}\n\nexport function createComponentGenerator({\n namespace,\n cppStringType,\n}: {\n namespace: string;\n cppStringType: CppStringTypes;\n}) {\n return (\n _libraryName: string,\n schema: SchemaType,\n _moduleSpecName: string,\n ): FilesOutput => {\n const files = new Map<string, string>();\n\n const cppCodegenOptions = {cppStringType};\n\n for (const componentName of Object.keys(schema.modules)) {\n const component = schema.modules[componentName];\n setPreferredModuleName(componentName);\n\n if (component.type === 'Component') {\n console.log(`Generating ${componentName}.g.h`);\n\n const componentShape = component.components[componentName];\n\n componentShape.extendsProps.forEach(propsBaseType => {\n if (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n propsBaseType.type !== 'ReactNativeBuiltInType' ||\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n propsBaseType.knownTypeName !== 'ReactNativeCoreViewProps'\n ) {\n throw new Error(\n 'Currently only supports props extending from ViewProps',\n );\n }\n });\n\n // Props\n const propObjectAliases: AliasMap<\n ObjectTypeAnnotation<PropTypeAnnotation>\n > = {types: {}, jobs: []};\n const propsName = `${componentName}Props`;\n const propsFields = componentShape.props\n .map(prop => {\n const propType = translateComponentPropsFieldType(\n prop.typeAnnotation,\n propObjectAliases,\n `${propsName}_${prop.name}`,\n cppCodegenOptions,\n );\n return ` REACT_FIELD(${prop.name})\\n ${\n prop.optional && !propType.alreadySupportsOptionalOrHasDefault\n ? `std::optional<${propType.type}>`\n : propType.type\n } ${prop.name}${propType.initializer};\\n`;\n })\n .join('\\n');\n\n const propInitializers = componentShape.props\n .map(prop => {\n return ` ${prop.name} = cloneFromProps->${prop.name};`;\n })\n .join('\\n');\n\n const propObjectTypes = propObjectAliases.jobs\n .map(propObjectTypeName => {\n const propObjectType = propObjectAliases.types[propObjectTypeName]!;\n const propsObjectFields = propObjectType.properties\n .map(property => {\n const propType = translateComponentPropsFieldType(\n property.typeAnnotation,\n propObjectAliases,\n `${propsName}_${property.name}`,\n cppCodegenOptions,\n );\n return ` REACT_FIELD(${property.name})\\n ${\n property.optional &&\n !propType.alreadySupportsOptionalOrHasDefault\n ? `std::optional<${propType.type}>`\n : propType.type\n } ${property.name}${propType.initializer};\\n`;\n })\n .join('\\n');\n\n return propsObjectTemplate\n .replace(\n /::_OBJECT_NAME_::/g,\n getAliasCppName(propObjectTypeName),\n )\n .replace(/::_OBJECT_FIELDS_::/g, propsObjectFields);\n })\n .join('\\n');\n\n // Events\n const eventObjectAliases: AliasMap<\n ObjectTypeAnnotation<EventTypeAnnotation>\n > = {types: {}, jobs: []};\n const eventEmitterName = `${componentName}EventEmitter`;\n const eventEmitterMethods = componentShape.events\n .filter(event => event.typeAnnotation.argument)\n .map(event => {\n if (event.typeAnnotation.argument?.baseTypes) {\n throw new Error(\n 'Events with base type arguments not currently supported',\n );\n }\n\n // Called to collect the eventObjectAliases\n translateComponentEventType(\n event.typeAnnotation.argument!,\n eventObjectAliases,\n `${event.name}`,\n cppCodegenOptions,\n );\n\n // onSomething -> something\n let eventNameLower = event.name.replace('on', '');\n eventNameLower =\n eventNameLower[0].toLowerCase() + eventNameLower.slice(1);\n\n return eventEmitterMethodTemplate\n .replace(/::_EVENT_NAME_::/g, event.name)\n .replace(/::_EVENT_NAME_NO_ON_::/g, eventNameLower)\n .replace(\n /::_EVENT_OBJECT_TYPE_::/g,\n event.name.replace('on', 'On'),\n );\n })\n .join('\\n\\n');\n\n const eventObjects = eventObjectAliases.jobs\n .map(eventObjectTypeName => {\n const eventObjectType =\n eventObjectAliases.types[eventObjectTypeName]!;\n const eventObjectFields = eventObjectType.properties\n .map(property => {\n const eventPropType = translateComponentEventType(\n property.typeAnnotation,\n eventObjectAliases,\n eventObjectTypeName,\n cppCodegenOptions,\n );\n return ` REACT_FIELD(${property.name})\\n ${\n property.optional &&\n !eventPropType.alreadySupportsOptionalOrHasDefault\n ? `std::optional<${eventPropType.type}>`\n : eventPropType.type\n } ${property.name}${eventPropType.initializer};\\n`;\n })\n .join('\\n');\n return eventsObjectTemplate\n .replace(\n /::_OBJECT_NAME_::/g,\n `${componentName}_${eventObjectTypeName.replace('on', 'On')}`,\n )\n .replace(/::_OBJECT_FIELDS_::/g, eventObjectFields);\n })\n .join('\\n');\n\n const eventObjectUsings = eventObjectAliases.jobs\n .map(eventObjectTypeName => {\n return ` using ${eventObjectTypeName.replace(\n 'on',\n 'On',\n )} = ${componentName}_${eventObjectTypeName.replace('on', 'On')};`;\n })\n .join('\\n');\n\n const eventEmitter = eventEmitterTemplate\n .replace(/::_COMPONENT_EVENT_OBJECT_TYPES_::/g, eventObjects)\n .replace(/::_EVENT_EMITTER_METHODS_::/g, eventEmitterMethods)\n .replace(/::_EVENT_EMITTER_USINGS_::/g, eventObjectUsings);\n\n // Commands\n const commandAliases: AliasMap<\n ObjectTypeAnnotation<CommandParamTypeAnnotation>\n > = {types: {}, jobs: []};\n const hasAnyCommands = componentShape.commands.length !== 0;\n const commandHandlers = hasAnyCommands\n ? componentShape.commands\n .map(command => {\n const commandArgs = command.typeAnnotation.params\n .map(param => {\n const commandArgType = translateCommandParamType(\n param.typeAnnotation,\n commandAliases,\n `${componentName}_${command.name}`,\n cppCodegenOptions,\n );\n return `${\n param.optional &&\n !commandArgType.alreadySupportsOptionalOrHasDefault\n ? `std::optional<${commandArgType.type}>`\n : commandArgType.type\n } ${param.name}`;\n })\n .join(', ');\n\n return ` // You must provide an implementation of this method to handle the \"${\n command.name\n }\" command\n virtual void Handle${capitalizeFirstLetter(\n command.name,\n )}Command(${commandArgs}) noexcept = 0;`;\n })\n .join('\\n\\n')\n : '';\n\n const commandHandler = hasAnyCommands\n ? `void HandleCommand(const winrt::Microsoft::ReactNative::ComponentView &view, const winrt::Microsoft::ReactNative::HandleCommandArgs& args) noexcept {\n auto userData = view.UserData().as<TUserData>();\n auto commandName = args.CommandName();\n${componentShape.commands\n .map(command => {\n const commaSeparatedCommandArgs = command.typeAnnotation.params\n .map(param => param.name)\n .join(', ');\n return ` if (commandName == L\"${command.name}\") {\n${\n command.typeAnnotation.params.length !== 0\n ? ` ${command.typeAnnotation.params\n .map(param => {\n const commandArgType = translateCommandParamType(\n param.typeAnnotation,\n commandAliases,\n `${componentName}_${command.name}`,\n cppCodegenOptions,\n );\n return `${\n param.optional &&\n !commandArgType.alreadySupportsOptionalOrHasDefault\n ? `std::optional<${commandArgType.type}>`\n : commandArgType.type\n } ${param.name};`;\n })\n .join('\\n')}\n winrt::Microsoft::ReactNative::ReadArgs(args.CommandArgs(), ${commaSeparatedCommandArgs});`\n : ''\n}\n userData->Handle${capitalizeFirstLetter(\n command.name,\n )}Command(${commaSeparatedCommandArgs});\n return;\n }`;\n })\n .join('\\n\\n')}\n }`\n : '';\n\n const registerCommandHandler = hasAnyCommands\n ? ` builder.SetCustomCommandHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,\n const winrt::Microsoft::ReactNative::HandleCommandArgs& args) noexcept {\n auto userData = view.UserData().as<TUserData>();\n userData->HandleCommand(view, args);\n });`\n : '';\n\n const baseType = baseStructTemplate\n .replace(/::_COMPONENT_VIEW_COMMAND_HANDLERS_::/g, commandHandlers)\n .replace(/::_COMPONENT_VIEW_COMMAND_HANDLER_::/g, commandHandler);\n\n // Registration\n const componentRegistration = registerTemplate.replace(\n /::_REGISTER_CUSTOM_COMMAND_HANDLER_::/g,\n registerCommandHandler,\n );\n\n // Final output\n const replaceContent = function (template: string): string {\n return template\n .replace(/::_COMPONENT_PROP_OBJECT_TYPES_::/g, propObjectTypes)\n .replace(/::_COMPONENT_PROP_TYPES_::/g, propsTemplate)\n .replace(/::_COMPONENT_EVENT_EMITTER_::/g, eventEmitter)\n .replace(/::_BASE_COMPONENT_STRUCT_::/g, baseType)\n .replace(/::_COMPONENT_REGISTRATION_::/g, componentRegistration)\n .replace(/::_EVENT_EMITTER_NAME_::/g, eventEmitterName)\n .replace(/::_PROPS_NAME_::/g, propsName)\n .replace(/::_COMPONENT_NAME_::/g, componentName)\n .replace(/::_PROP_INITIALIZERS_::/g, propInitializers)\n .replace(/::_PROPS_FIELDS_::/g, propsFields)\n .replace(/::_NAMESPACE_::/g, namespace)\n .replace(/\\n\\n\\n+/g, '\\n\\n');\n };\n\n files.set(`${componentName}.g.h`, replaceContent(fileTemplate));\n }\n }\n\n return files;\n };\n}\n"]}
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
* @format
|
|
5
5
|
*/
|
|
6
|
-
import type { NativeModuleBaseTypeAnnotation, NativeModuleStringTypeAnnotation, NativeModuleFunctionTypeAnnotation, NativeModuleStringLiteralTypeAnnotation,
|
|
6
|
+
import type { NativeModuleBaseTypeAnnotation, NativeModuleStringTypeAnnotation, NativeModuleFunctionTypeAnnotation, NativeModuleStringLiteralTypeAnnotation, StringLiteralUnionTypeAnnotation, UnsafeAnyTypeAnnotation, Nullable } from '@react-native/codegen/lib/CodegenSchema';
|
|
7
7
|
import { AliasMap } from './AliasManaging';
|
|
8
8
|
export type CppStringTypes = 'std::string' | 'std::wstring';
|
|
9
9
|
export interface CppCodegenOptions {
|
|
10
10
|
cppStringType: CppStringTypes;
|
|
11
11
|
}
|
|
12
|
-
export declare function translateFieldOrReturnType(type: Nullable<NativeModuleBaseTypeAnnotation | NativeModuleStringTypeAnnotation | NativeModuleFunctionTypeAnnotation | NativeModuleStringLiteralTypeAnnotation |
|
|
12
|
+
export declare function translateFieldOrReturnType(type: Nullable<NativeModuleBaseTypeAnnotation | NativeModuleStringTypeAnnotation | NativeModuleFunctionTypeAnnotation | NativeModuleStringLiteralTypeAnnotation | StringLiteralUnionTypeAnnotation> | UnsafeAnyTypeAnnotation, aliases: AliasMap, baseAliasName: string, callerName: 'translateField' | 'translateReturnType', options: CppCodegenOptions): string;
|
|
13
13
|
export declare function translateField(type: Nullable<NativeModuleBaseTypeAnnotation>, aliases: AliasMap, baseAliasName: string, options: CppCodegenOptions): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectTypes.js","sourceRoot":"","sources":["../../src/generators/ObjectTypes.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\n'use strict';\n\nimport type {\n NativeModuleEnumDeclaration,\n NativeModuleBaseTypeAnnotation,\n NativeModuleUnionTypeAnnotation,\n NativeModuleStringTypeAnnotation,\n NativeModuleFunctionTypeAnnotation,\n NativeModuleStringLiteralTypeAnnotation,\n
|
|
1
|
+
{"version":3,"file":"ObjectTypes.js","sourceRoot":"","sources":["../../src/generators/ObjectTypes.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\n'use strict';\n\nimport type {\n NativeModuleEnumDeclaration,\n NativeModuleBaseTypeAnnotation,\n NativeModuleUnionTypeAnnotation,\n NativeModuleStringTypeAnnotation,\n NativeModuleFunctionTypeAnnotation,\n NativeModuleStringLiteralTypeAnnotation,\n StringLiteralUnionTypeAnnotation,\n UnsafeAnyTypeAnnotation,\n Nullable,\n} from '@react-native/codegen/lib/CodegenSchema';\nimport {\n AliasMap,\n getAliasCppName,\n getAnonymousAliasCppName,\n} from './AliasManaging';\n\nexport type CppStringTypes = 'std::string' | 'std::wstring';\n\nexport interface CppCodegenOptions {\n cppStringType: CppStringTypes;\n}\n\nfunction translateUnionReturnType(\n type: NativeModuleEnumDeclaration | NativeModuleUnionTypeAnnotation,\n options: CppCodegenOptions,\n): string {\n const memberType = type.memberType;\n switch (type.memberType) {\n case 'StringTypeAnnotation':\n return options.cppStringType;\n case 'NumberTypeAnnotation':\n return 'double';\n case 'ObjectTypeAnnotation':\n return '::React::JSValue';\n default:\n throw new Error(\n `Unknown enum/union member type in translateReturnType: ${memberType}`,\n );\n }\n}\n\n// eslint-disable-next-line complexity\nexport function translateFieldOrReturnType(\n type:\n | Nullable<\n | NativeModuleBaseTypeAnnotation\n | NativeModuleStringTypeAnnotation\n | NativeModuleFunctionTypeAnnotation\n | NativeModuleStringLiteralTypeAnnotation\n | StringLiteralUnionTypeAnnotation\n >\n | UnsafeAnyTypeAnnotation,\n aliases: AliasMap,\n baseAliasName: string,\n callerName: 'translateField' | 'translateReturnType',\n options: CppCodegenOptions,\n): string {\n // avoid: Property 'type' does not exist on type 'never'\n const returnType = type.type;\n switch (type.type) {\n case 'StringTypeAnnotation':\n case 'StringLiteralTypeAnnotation':\n case 'StringLiteralUnionTypeAnnotation':\n return options.cppStringType;\n case 'NumberTypeAnnotation':\n case 'FloatTypeAnnotation':\n case 'DoubleTypeAnnotation':\n return 'double';\n case 'Int32TypeAnnotation':\n return 'int';\n case 'BooleanTypeAnnotation':\n return 'bool';\n case 'ArrayTypeAnnotation':\n if (type.elementType.type !== 'AnyTypeAnnotation') {\n return `std::vector<${translateFieldOrReturnType(\n type.elementType,\n aliases,\n `${baseAliasName}_element`,\n callerName,\n options,\n )}>`;\n } else {\n return `::React::JSValueArray`;\n }\n case 'GenericObjectTypeAnnotation':\n return '::React::JSValue';\n case 'ObjectTypeAnnotation':\n return getAnonymousAliasCppName(aliases, baseAliasName, type);\n case 'ReservedTypeAnnotation': {\n // avoid: Property 'name' does not exist on type 'never'\n const name = type.name;\n // (#6597)\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (name !== 'RootTag')\n throw new Error(`Unknown reserved function: ${name} in ${callerName}`);\n return 'double';\n }\n case 'TypeAliasTypeAnnotation':\n return getAliasCppName(type.name);\n case 'NullableTypeAnnotation':\n return `std::optional<${translateFieldOrReturnType(\n type.typeAnnotation,\n aliases,\n baseAliasName,\n callerName,\n options,\n )}>`;\n case 'FunctionTypeAnnotation':\n case 'MixedTypeAnnotation':\n return '';\n case 'EnumDeclaration':\n case 'UnionTypeAnnotation':\n return translateUnionReturnType(type, options);\n case 'AnyTypeAnnotation':\n return '::React::JSValue?';\n default:\n throw new Error(`Unhandled type in ${callerName}: ${returnType}`);\n }\n}\n\nexport function translateField(\n type: Nullable<NativeModuleBaseTypeAnnotation>,\n aliases: AliasMap,\n baseAliasName: string,\n options: CppCodegenOptions,\n): string {\n return translateFieldOrReturnType(\n type,\n aliases,\n baseAliasName,\n 'translateField',\n options,\n );\n}\n"]}
|
|
@@ -131,7 +131,7 @@ function translateComponentEventType(type, aliases, baseAliasName, options) {
|
|
|
131
131
|
case 'ObjectTypeAnnotation':
|
|
132
132
|
arrayTemplateArg = translateComponentEventType(type.elementType, aliases, baseAliasName, options).type;
|
|
133
133
|
break;
|
|
134
|
-
case '
|
|
134
|
+
case 'StringLiteralUnionTypeAnnotation':
|
|
135
135
|
arrayTemplateArg = options.cppStringType; // TODO - better enum type handling than just passing a string
|
|
136
136
|
break;
|
|
137
137
|
default:
|
|
@@ -145,7 +145,7 @@ function translateComponentEventType(type, aliases, baseAliasName, options) {
|
|
|
145
145
|
case 'MixedTypeAnnotation': {
|
|
146
146
|
return { type: 'winrt::Microsoft::ReactNative::JSValue', initializer: '{nullptr}', alreadySupportsOptionalOrHasDefault: true };
|
|
147
147
|
}
|
|
148
|
-
case '
|
|
148
|
+
case 'StringLiteralUnionTypeAnnotation':
|
|
149
149
|
return { type: options.cppStringType, initializer: '' }; // TODO - better enum type handling than just passing a string
|
|
150
150
|
default:
|
|
151
151
|
throw new Error(`Unhandled type: ${type.type}`);
|
|
@@ -183,19 +183,10 @@ function translateCommandParamType(type, aliases, baseAliasName, options) {
|
|
|
183
183
|
case 'StringTypeAnnotation':
|
|
184
184
|
arrayTemplateArg = options.cppStringType;
|
|
185
185
|
break;
|
|
186
|
-
case '
|
|
187
|
-
|
|
188
|
-
arrayTemplateArg = `std::vector<${innerType.type}>`;
|
|
189
|
-
break;
|
|
190
|
-
case 'ReservedPropTypeAnnotation':
|
|
186
|
+
case 'MixedTypeAnnotation':
|
|
187
|
+
// TODO - not sure what exact value to be used here
|
|
191
188
|
arrayTemplateArg = 'winrt::Microsoft::ReactNative::JSValue';
|
|
192
189
|
break;
|
|
193
|
-
case 'ObjectTypeAnnotation':
|
|
194
|
-
arrayTemplateArg = 'winrt::Microsoft::ReactNative::JSValueObject'; // TODO - better typing
|
|
195
|
-
break;
|
|
196
|
-
case 'StringEnumTypeAnnotation':
|
|
197
|
-
arrayTemplateArg = options.cppStringType; // TODO - better enum type handling than just passing a string
|
|
198
|
-
break;
|
|
199
190
|
case 'GenericTypeAnnotation': // TODO verify schema - Getting this type when running codegen on all the built in types
|
|
200
191
|
arrayTemplateArg = 'winrt::Microsoft::ReactNative::JSValue';
|
|
201
192
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PropObjectTypes.js","sourceRoot":"","sources":["../../src/generators/PropObjectTypes.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropTypeAnnotation, ObjectTypeAnnotation, EventTypeAnnotation, CommandParamTypeAnnotation } from '@react-native/codegen/lib/CodegenSchema';\nimport type { CppCodegenOptions } from './ObjectTypes';\nimport {\n AliasMap,\n getAnonymousAliasCppName,\n} from './AliasManaging';\n\n\n// eslint-disable-next-line complexity\nexport function translateComponentPropsFieldType(type: PropTypeAnnotation,\n aliases: AliasMap<ObjectTypeAnnotation<PropTypeAnnotation>>,\n baseAliasName: string,\n options: CppCodegenOptions): { type: string, initializer: string, alreadySupportsOptionalOrHasDefault?: boolean } {\n switch (type.type) {\n case 'StringTypeAnnotation':\n return { type: options.cppStringType, initializer: type.default ? `{${type.default}}` : '', alreadySupportsOptionalOrHasDefault: !!type.default };\n case 'FloatTypeAnnotation':\n return { type: 'float', initializer: type.default ? `{${type.default}}` : '{}', alreadySupportsOptionalOrHasDefault: !!type.default };\n case 'DoubleTypeAnnotation':\n return { type: 'double', initializer: type.default ? `{${type.default}}` : '{}', alreadySupportsOptionalOrHasDefault: !!type.default };\n case 'Int32TypeAnnotation':\n return { type: 'int32_t', initializer: type.default ? `{${type.default}}` : '{}', alreadySupportsOptionalOrHasDefault: !!type.default };\n case 'BooleanTypeAnnotation':\n return { type: 'bool', initializer: type.default ? `{${type.default}}` : '{}', alreadySupportsOptionalOrHasDefault: !!type.default };\n case 'ArrayTypeAnnotation':\n\n let arrayTemplateArg = '';\n switch (type.elementType.type) {\n case 'BooleanTypeAnnotation':\n arrayTemplateArg = 'bool';\n break;\n case 'DoubleTypeAnnotation':\n arrayTemplateArg = 'double';\n break;\n case 'FloatTypeAnnotation':\n arrayTemplateArg = 'float';\n break;\n case 'Int32TypeAnnotation':\n arrayTemplateArg = 'int32_t';\n break;\n case 'StringTypeAnnotation':\n arrayTemplateArg = options.cppStringType;\n break;\n case 'ArrayTypeAnnotation':\n const innerType = translateComponentPropsFieldType(type.elementType, aliases, baseAliasName, options);\n arrayTemplateArg = `std::vector<${innerType.type}>`;\n break;\n case 'ObjectTypeAnnotation':\n arrayTemplateArg = translateComponentPropsFieldType(type.elementType, aliases, baseAliasName, options).type;\n break;\n case 'ReservedPropTypeAnnotation':\n switch (type.elementType.name) {\n case 'ColorPrimitive':\n arrayTemplateArg = 'winrt::Microsoft::ReactNative::Color';\n break;\n case 'DimensionPrimitive':\n case 'EdgeInsetsPrimitive':\n case 'ImageRequestPrimitive':\n case 'ImageSourcePrimitive':\n case 'PointPrimitive':\n arrayTemplateArg = 'winrt::Microsoft::ReactNative::JSValue'; // TODO - better handling for these types than JSValue\n break;\n default:\n throw new Error(`Unhandled ReservedPropTypeAnnotation type: ${type.elementType.name}`);\n }\n break;\n case 'StringEnumTypeAnnotation':\n arrayTemplateArg = options.cppStringType; // TODO - better enum type handling than just passing a string\n break;\n default:\n throw new Error(`Unhandled type: ${type.type}`);\n }\n\n return { type: `std::vector<${arrayTemplateArg}>`, initializer: '' };\n case 'ReservedPropTypeAnnotation':\n switch (type.name) {\n case 'ColorPrimitive':\n return { type: 'winrt::Microsoft::ReactNative::Color', initializer: '{nullptr}', alreadySupportsOptionalOrHasDefault: true };\n case 'DimensionPrimitive':\n case 'EdgeInsetsPrimitive':\n case 'ImageRequestPrimitive':\n case 'ImageSourcePrimitive':\n case 'PointPrimitive':\n return { type: 'winrt::Microsoft::ReactNative::JSValue', initializer: '{nullptr}', alreadySupportsOptionalOrHasDefault: true }; // TODO - better handling for these types than JSValue\n default:\n throw new Error(`Unhandled ReservedPropTypeAnnotation type: ${type.name}`);\n }\n case 'ObjectTypeAnnotation': {\n return { type: getAnonymousAliasCppName<ObjectTypeAnnotation<PropTypeAnnotation>>(aliases, baseAliasName, type), initializer: '' };\n }\n case 'MixedTypeAnnotation':\n return { type: 'winrt::Microsoft::ReactNative::JSValue', initializer: '{nullptr}', alreadySupportsOptionalOrHasDefault: true };\n case 'Int32EnumTypeAnnotation':\n return { type: 'int32_t', initializer: '' }; // TODO - better enum type handling than just passing a string\n case 'StringEnumTypeAnnotation':\n return { type: options.cppStringType, initializer: '' }; // TODO - better enum type handling than just passing an int\n default:\n throw new Error(`Unhandled type: ${(type as any).type}`);\n }\n}\n\nexport function translateComponentEventType(type: EventTypeAnnotation,\n aliases: AliasMap<ObjectTypeAnnotation<EventTypeAnnotation>>,\n baseAliasName: string,\n options: CppCodegenOptions): { type: string, initializer: string, alreadySupportsOptionalOrHasDefault?: boolean } {\n switch (type.type) {\n case 'StringTypeAnnotation':\n return { type: options.cppStringType, initializer: '' };\n case 'FloatTypeAnnotation':\n return { type: 'float', initializer: '{}' };\n case 'DoubleTypeAnnotation':\n return { type: 'double', initializer: '{}' };\n case 'Int32TypeAnnotation':\n return { type: 'int32_t', initializer: '{}' };\n case 'BooleanTypeAnnotation':\n return { type: 'bool', initializer: '{}' };\n case 'ArrayTypeAnnotation':\n {\n let arrayTemplateArg = '';\n switch (type.elementType.type) {\n case 'BooleanTypeAnnotation':\n arrayTemplateArg = 'bool';\n break;\n case 'DoubleTypeAnnotation':\n arrayTemplateArg = 'double';\n break;\n case 'FloatTypeAnnotation':\n arrayTemplateArg = 'float';\n break;\n case 'Int32TypeAnnotation':\n arrayTemplateArg = 'int32_t';\n break;\n case 'StringTypeAnnotation':\n arrayTemplateArg = options.cppStringType;\n break;\n case 'ArrayTypeAnnotation':\n const innerType = translateComponentEventType(type.elementType, aliases, baseAliasName, options);\n arrayTemplateArg = `std::vector<${innerType.type}>`;\n break;\n case 'MixedTypeAnnotation':\n arrayTemplateArg = 'winrt::Microsoft::ReactNative::JSValue';\n break;\n case 'ObjectTypeAnnotation':\n arrayTemplateArg = translateComponentEventType(type.elementType, aliases, baseAliasName, options).type;\n break;\n case 'StringEnumTypeAnnotation':\n arrayTemplateArg = options.cppStringType; // TODO - better enum type handling than just passing a string\n break;\n default:\n throw new Error(`Unhandled type: ${type.type}`);\n }\n\n return { type: `std::vector<${arrayTemplateArg}>`, initializer: '{}' };\n }\n case 'ObjectTypeAnnotation': {\n return { type: getAnonymousAliasCppName<ObjectTypeAnnotation<EventTypeAnnotation>>(aliases, baseAliasName, type), initializer: '' };\n }\n case 'MixedTypeAnnotation': {\n return { type: 'winrt::Microsoft::ReactNative::JSValue', initializer: '{nullptr}', alreadySupportsOptionalOrHasDefault: true };\n }\n case 'StringEnumTypeAnnotation':\n return { type: options.cppStringType, initializer: '' }; // TODO - better enum type handling than just passing a string\n default:\n throw new Error(`Unhandled type: ${(type as any).type}`);\n }\n}\n\n\nexport function translateCommandParamType(type: CommandParamTypeAnnotation,\n aliases: AliasMap<ObjectTypeAnnotation<CommandParamTypeAnnotation>>,\n baseAliasName: string,\n options: CppCodegenOptions): { type: string, initializer: string, alreadySupportsOptionalOrHasDefault?: boolean } {\n switch (type.type) {\n case 'StringTypeAnnotation':\n return { type: options.cppStringType, initializer: '' };\n case 'FloatTypeAnnotation':\n return { type: 'float', initializer: '{}' };\n case 'DoubleTypeAnnotation':\n return { type: 'double', initializer: '{}' };\n case 'Int32TypeAnnotation':\n return { type: 'int32_t', initializer: '{}' };\n case 'BooleanTypeAnnotation':\n return { type: 'bool', initializer: '{}' };\n case 'ArrayTypeAnnotation':\n {\n let arrayTemplateArg = '';\n switch (type.elementType.type) {\n case 'BooleanTypeAnnotation':\n arrayTemplateArg = 'bool';\n break;\n case 'DoubleTypeAnnotation':\n arrayTemplateArg = 'double';\n break;\n case 'FloatTypeAnnotation':\n arrayTemplateArg = 'float';\n break;\n case 'Int32TypeAnnotation':\n arrayTemplateArg = 'int32_t';\n break;\n case 'StringTypeAnnotation':\n arrayTemplateArg = options.cppStringType;\n break;\n case 'ArrayTypeAnnotation':\n const innerType = translateCommandParamType(type.elementType, aliases, baseAliasName, options);\n arrayTemplateArg = `std::vector<${innerType.type}>`;\n break;\n case 'ReservedPropTypeAnnotation':\n arrayTemplateArg = 'winrt::Microsoft::ReactNative::JSValue';\n break;\n case 'ObjectTypeAnnotation':\n arrayTemplateArg = 'winrt::Microsoft::ReactNative::JSValueObject'; // TODO - better typing\n break;\n case 'StringEnumTypeAnnotation':\n arrayTemplateArg = options.cppStringType; // TODO - better enum type handling than just passing a string\n break;\n case 'GenericTypeAnnotation' as any: // TODO verify schema - Getting this type when running codegen on all the built in types\n arrayTemplateArg = 'winrt::Microsoft::ReactNative::JSValue';\n break;\n default:\n throw new Error(`Unhandled type: ${(type.elementType as any).type} - ${JSON.stringify(type.elementType, null, 2)}`);\n }\n\n return { type: `std::vector<${arrayTemplateArg}>`, initializer: '{}' };\n }\n case 'ReservedTypeAnnotation': \n if ((type.name as any) !== 'RootTag') {\n throw new Error(`Unhandled ReservedTypeAnnotation: ${type.name}`)\n }\n return { type: 'bool', initializer: '{-1}' };\n default:\n throw new Error(`Unhandled type: ${(type as any).type}`);\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"PropObjectTypes.js","sourceRoot":"","sources":["../../src/generators/PropObjectTypes.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropTypeAnnotation, ObjectTypeAnnotation, EventTypeAnnotation, CommandParamTypeAnnotation } from '@react-native/codegen/lib/CodegenSchema';\nimport type { CppCodegenOptions } from './ObjectTypes';\nimport {\n AliasMap,\n getAnonymousAliasCppName,\n} from './AliasManaging';\n\n\n// eslint-disable-next-line complexity\nexport function translateComponentPropsFieldType(type: PropTypeAnnotation,\n aliases: AliasMap<ObjectTypeAnnotation<PropTypeAnnotation>>,\n baseAliasName: string,\n options: CppCodegenOptions): { type: string, initializer: string, alreadySupportsOptionalOrHasDefault?: boolean } {\n switch (type.type) {\n case 'StringTypeAnnotation':\n return { type: options.cppStringType, initializer: type.default ? `{${type.default}}` : '', alreadySupportsOptionalOrHasDefault: !!type.default };\n case 'FloatTypeAnnotation':\n return { type: 'float', initializer: type.default ? `{${type.default}}` : '{}', alreadySupportsOptionalOrHasDefault: !!type.default };\n case 'DoubleTypeAnnotation':\n return { type: 'double', initializer: type.default ? `{${type.default}}` : '{}', alreadySupportsOptionalOrHasDefault: !!type.default };\n case 'Int32TypeAnnotation':\n return { type: 'int32_t', initializer: type.default ? `{${type.default}}` : '{}', alreadySupportsOptionalOrHasDefault: !!type.default };\n case 'BooleanTypeAnnotation':\n return { type: 'bool', initializer: type.default ? `{${type.default}}` : '{}', alreadySupportsOptionalOrHasDefault: !!type.default };\n case 'ArrayTypeAnnotation':\n let arrayTemplateArg = '';\n switch (type.elementType.type) {\n case 'BooleanTypeAnnotation':\n arrayTemplateArg = 'bool';\n break;\n case 'DoubleTypeAnnotation':\n arrayTemplateArg = 'double';\n break;\n case 'FloatTypeAnnotation':\n arrayTemplateArg = 'float';\n break;\n case 'Int32TypeAnnotation':\n arrayTemplateArg = 'int32_t';\n break;\n case 'StringTypeAnnotation':\n arrayTemplateArg = options.cppStringType;\n break;\n case 'ArrayTypeAnnotation':\n const innerType = translateComponentPropsFieldType(type.elementType, aliases, baseAliasName, options);\n arrayTemplateArg = `std::vector<${innerType.type}>`;\n break;\n case 'ObjectTypeAnnotation':\n arrayTemplateArg = translateComponentPropsFieldType(type.elementType, aliases, baseAliasName, options).type;\n break;\n case 'ReservedPropTypeAnnotation':\n switch (type.elementType.name) {\n case 'ColorPrimitive':\n arrayTemplateArg = 'winrt::Microsoft::ReactNative::Color';\n break;\n case 'DimensionPrimitive':\n case 'EdgeInsetsPrimitive':\n case 'ImageRequestPrimitive':\n case 'ImageSourcePrimitive':\n case 'PointPrimitive':\n arrayTemplateArg = 'winrt::Microsoft::ReactNative::JSValue'; // TODO - better handling for these types than JSValue\n break;\n default:\n throw new Error(`Unhandled ReservedPropTypeAnnotation type: ${type.elementType.name}`);\n }\n break;\n case 'StringEnumTypeAnnotation':\n arrayTemplateArg = options.cppStringType; // TODO - better enum type handling than just passing a string\n break;\n default:\n throw new Error(`Unhandled type: ${type.type}`);\n }\n\n return { type: `std::vector<${arrayTemplateArg}>`, initializer: '' };\n case 'ReservedPropTypeAnnotation':\n switch (type.name) {\n case 'ColorPrimitive':\n return { type: 'winrt::Microsoft::ReactNative::Color', initializer: '{nullptr}', alreadySupportsOptionalOrHasDefault: true };\n case 'DimensionPrimitive':\n case 'EdgeInsetsPrimitive':\n case 'ImageRequestPrimitive':\n case 'ImageSourcePrimitive':\n case 'PointPrimitive':\n return { type: 'winrt::Microsoft::ReactNative::JSValue', initializer: '{nullptr}', alreadySupportsOptionalOrHasDefault: true }; // TODO - better handling for these types than JSValue\n default:\n throw new Error(`Unhandled ReservedPropTypeAnnotation type: ${type.name}`);\n }\n case 'ObjectTypeAnnotation': {\n return { type: getAnonymousAliasCppName<ObjectTypeAnnotation<PropTypeAnnotation>>(aliases, baseAliasName, type), initializer: '' };\n }\n case 'MixedTypeAnnotation':\n return { type: 'winrt::Microsoft::ReactNative::JSValue', initializer: '{nullptr}', alreadySupportsOptionalOrHasDefault: true };\n case 'Int32EnumTypeAnnotation':\n return { type: 'int32_t', initializer: '' }; // TODO - better enum type handling than just passing a string\n case 'StringEnumTypeAnnotation':\n return { type: options.cppStringType, initializer: '' }; // TODO - better enum type handling than just passing an int\n default:\n throw new Error(`Unhandled type: ${(type as any).type}`);\n }\n}\n\nexport function translateComponentEventType(type: EventTypeAnnotation,\n aliases: AliasMap<ObjectTypeAnnotation<EventTypeAnnotation>>,\n baseAliasName: string,\n options: CppCodegenOptions): { type: string, initializer: string, alreadySupportsOptionalOrHasDefault?: boolean } {\n switch (type.type) {\n case 'StringTypeAnnotation':\n return { type: options.cppStringType, initializer: '' };\n case 'FloatTypeAnnotation':\n return { type: 'float', initializer: '{}' };\n case 'DoubleTypeAnnotation':\n return { type: 'double', initializer: '{}' };\n case 'Int32TypeAnnotation':\n return { type: 'int32_t', initializer: '{}' };\n case 'BooleanTypeAnnotation':\n return { type: 'bool', initializer: '{}' };\n case 'ArrayTypeAnnotation':\n {\n let arrayTemplateArg = '';\n switch (type.elementType.type) {\n case 'BooleanTypeAnnotation':\n arrayTemplateArg = 'bool';\n break;\n case 'DoubleTypeAnnotation':\n arrayTemplateArg = 'double';\n break;\n case 'FloatTypeAnnotation':\n arrayTemplateArg = 'float';\n break;\n case 'Int32TypeAnnotation':\n arrayTemplateArg = 'int32_t';\n break;\n case 'StringTypeAnnotation':\n arrayTemplateArg = options.cppStringType;\n break;\n case 'ArrayTypeAnnotation':\n const innerType = translateComponentEventType(type.elementType, aliases, baseAliasName, options);\n arrayTemplateArg = `std::vector<${innerType.type}>`;\n break;\n case 'MixedTypeAnnotation':\n arrayTemplateArg = 'winrt::Microsoft::ReactNative::JSValue';\n break;\n case 'ObjectTypeAnnotation':\n arrayTemplateArg = translateComponentEventType(type.elementType, aliases, baseAliasName, options).type;\n break;\n case 'StringLiteralUnionTypeAnnotation':\n arrayTemplateArg = options.cppStringType; // TODO - better enum type handling than just passing a string\n break;\n default:\n throw new Error(`Unhandled type: ${type.type}`);\n }\n\n return { type: `std::vector<${arrayTemplateArg}>`, initializer: '{}' };\n }\n case 'ObjectTypeAnnotation': {\n return { type: getAnonymousAliasCppName<ObjectTypeAnnotation<EventTypeAnnotation>>(aliases, baseAliasName, type), initializer: '' };\n }\n case 'MixedTypeAnnotation': {\n return { type: 'winrt::Microsoft::ReactNative::JSValue', initializer: '{nullptr}', alreadySupportsOptionalOrHasDefault: true };\n }\n case 'StringLiteralUnionTypeAnnotation':\n return { type: options.cppStringType, initializer: '' }; // TODO - better enum type handling than just passing a string\n default:\n throw new Error(`Unhandled type: ${(type as any).type}`);\n }\n}\n\n\nexport function translateCommandParamType(type: CommandParamTypeAnnotation,\n aliases: AliasMap<ObjectTypeAnnotation<CommandParamTypeAnnotation>>,\n baseAliasName: string,\n options: CppCodegenOptions): { type: string, initializer: string, alreadySupportsOptionalOrHasDefault?: boolean } {\n switch (type.type) {\n case 'StringTypeAnnotation':\n return { type: options.cppStringType, initializer: '' };\n case 'FloatTypeAnnotation':\n return { type: 'float', initializer: '{}' };\n case 'DoubleTypeAnnotation':\n return { type: 'double', initializer: '{}' };\n case 'Int32TypeAnnotation':\n return { type: 'int32_t', initializer: '{}' };\n case 'BooleanTypeAnnotation':\n return { type: 'bool', initializer: '{}' };\n case 'ArrayTypeAnnotation':\n {\n let arrayTemplateArg = '';\n switch (type.elementType.type) {\n case 'BooleanTypeAnnotation':\n arrayTemplateArg = 'bool';\n break;\n case 'DoubleTypeAnnotation':\n arrayTemplateArg = 'double';\n break;\n case 'FloatTypeAnnotation':\n arrayTemplateArg = 'float';\n break;\n case 'Int32TypeAnnotation':\n arrayTemplateArg = 'int32_t';\n break;\n case 'StringTypeAnnotation':\n arrayTemplateArg = options.cppStringType;\n break;\n case 'MixedTypeAnnotation':\n // TODO - not sure what exact value to be used here\n arrayTemplateArg = 'winrt::Microsoft::ReactNative::JSValue';\n break;\n case 'GenericTypeAnnotation' as any: // TODO verify schema - Getting this type when running codegen on all the built in types\n arrayTemplateArg = 'winrt::Microsoft::ReactNative::JSValue';\n break;\n default:\n throw new Error(`Unhandled type: ${(type.elementType as any).type} - ${JSON.stringify(type.elementType, null, 2)}`);\n }\n\n return { type: `std::vector<${arrayTemplateArg}>`, initializer: '{}' };\n }\n case 'ReservedTypeAnnotation': \n if ((type.name as any) !== 'RootTag') {\n throw new Error(`Unhandled ReservedTypeAnnotation: ${type.name}`)\n }\n return { type: 'bool', initializer: '{-1}' };\n default:\n throw new Error(`Unhandled type: ${(type as any).type}`);\n }\n}"]}
|
package/package.json
CHANGED
|
@@ -200,7 +200,7 @@ void Register::_COMPONENT_NAME_::NativeComponent(
|
|
|
200
200
|
builder.SetUpdateStateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
|
|
201
201
|
const winrt::Microsoft::ReactNative::IComponentState &newState) noexcept {
|
|
202
202
|
auto userData = view.UserData().as<TUserData>();
|
|
203
|
-
userData->
|
|
203
|
+
userData->UpdateState(view, newState);
|
|
204
204
|
});
|
|
205
205
|
}
|
|
206
206
|
|
|
@@ -13,7 +13,7 @@ import type {
|
|
|
13
13
|
NativeModuleStringTypeAnnotation,
|
|
14
14
|
NativeModuleFunctionTypeAnnotation,
|
|
15
15
|
NativeModuleStringLiteralTypeAnnotation,
|
|
16
|
-
|
|
16
|
+
StringLiteralUnionTypeAnnotation,
|
|
17
17
|
UnsafeAnyTypeAnnotation,
|
|
18
18
|
Nullable,
|
|
19
19
|
} from '@react-native/codegen/lib/CodegenSchema';
|
|
@@ -56,7 +56,7 @@ export function translateFieldOrReturnType(
|
|
|
56
56
|
| NativeModuleStringTypeAnnotation
|
|
57
57
|
| NativeModuleFunctionTypeAnnotation
|
|
58
58
|
| NativeModuleStringLiteralTypeAnnotation
|
|
59
|
-
|
|
|
59
|
+
| StringLiteralUnionTypeAnnotation
|
|
60
60
|
>
|
|
61
61
|
| UnsafeAnyTypeAnnotation,
|
|
62
62
|
aliases: AliasMap,
|
|
@@ -23,7 +23,6 @@ export function translateComponentPropsFieldType(type: PropTypeAnnotation,
|
|
|
23
23
|
case 'BooleanTypeAnnotation':
|
|
24
24
|
return { type: 'bool', initializer: type.default ? `{${type.default}}` : '{}', alreadySupportsOptionalOrHasDefault: !!type.default };
|
|
25
25
|
case 'ArrayTypeAnnotation':
|
|
26
|
-
|
|
27
26
|
let arrayTemplateArg = '';
|
|
28
27
|
switch (type.elementType.type) {
|
|
29
28
|
case 'BooleanTypeAnnotation':
|
|
@@ -143,7 +142,7 @@ export function translateComponentEventType(type: EventTypeAnnotation,
|
|
|
143
142
|
case 'ObjectTypeAnnotation':
|
|
144
143
|
arrayTemplateArg = translateComponentEventType(type.elementType, aliases, baseAliasName, options).type;
|
|
145
144
|
break;
|
|
146
|
-
case '
|
|
145
|
+
case 'StringLiteralUnionTypeAnnotation':
|
|
147
146
|
arrayTemplateArg = options.cppStringType; // TODO - better enum type handling than just passing a string
|
|
148
147
|
break;
|
|
149
148
|
default:
|
|
@@ -158,7 +157,7 @@ export function translateComponentEventType(type: EventTypeAnnotation,
|
|
|
158
157
|
case 'MixedTypeAnnotation': {
|
|
159
158
|
return { type: 'winrt::Microsoft::ReactNative::JSValue', initializer: '{nullptr}', alreadySupportsOptionalOrHasDefault: true };
|
|
160
159
|
}
|
|
161
|
-
case '
|
|
160
|
+
case 'StringLiteralUnionTypeAnnotation':
|
|
162
161
|
return { type: options.cppStringType, initializer: '' }; // TODO - better enum type handling than just passing a string
|
|
163
162
|
default:
|
|
164
163
|
throw new Error(`Unhandled type: ${(type as any).type}`);
|
|
@@ -200,19 +199,10 @@ export function translateCommandParamType(type: CommandParamTypeAnnotation,
|
|
|
200
199
|
case 'StringTypeAnnotation':
|
|
201
200
|
arrayTemplateArg = options.cppStringType;
|
|
202
201
|
break;
|
|
203
|
-
case '
|
|
204
|
-
|
|
205
|
-
arrayTemplateArg = `std::vector<${innerType.type}>`;
|
|
206
|
-
break;
|
|
207
|
-
case 'ReservedPropTypeAnnotation':
|
|
202
|
+
case 'MixedTypeAnnotation':
|
|
203
|
+
// TODO - not sure what exact value to be used here
|
|
208
204
|
arrayTemplateArg = 'winrt::Microsoft::ReactNative::JSValue';
|
|
209
205
|
break;
|
|
210
|
-
case 'ObjectTypeAnnotation':
|
|
211
|
-
arrayTemplateArg = 'winrt::Microsoft::ReactNative::JSValueObject'; // TODO - better typing
|
|
212
|
-
break;
|
|
213
|
-
case 'StringEnumTypeAnnotation':
|
|
214
|
-
arrayTemplateArg = options.cppStringType; // TODO - better enum type handling than just passing a string
|
|
215
|
-
break;
|
|
216
206
|
case 'GenericTypeAnnotation' as any: // TODO verify schema - Getting this type when running codegen on all the built in types
|
|
217
207
|
arrayTemplateArg = 'winrt::Microsoft::ReactNative::JSValue';
|
|
218
208
|
break;
|