@react-native-windows/codegen 0.81.0 → 0.81.2

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 CHANGED
@@ -1,18 +1,34 @@
1
1
  # Change Log - @react-native-windows/codegen
2
2
 
3
- <!-- This log was last generated on Sat, 20 Dec 2025 12:01:47 GMT and should not be manually modified. -->
3
+ <!-- This log was last generated on Wed, 11 Feb 2026 16:10:18 GMT and should not be manually modified. -->
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
- ## 0.81.0
7
+ ## 0.81.2
8
8
 
9
- Sat, 20 Dec 2025 12:01:47 GMT
9
+ Wed, 11 Feb 2026 16:10:18 GMT
10
10
 
11
11
  ### Patches
12
12
 
13
- - Promote 0.81 to latest (66076509+vineethkuttan@users.noreply.github.com)
14
- - Bump @react-native-windows/fs to v0.81.0
13
+ - Fix issues with more complex props and event types (30809111+acoates-ms@users.noreply.github.com)
15
14
 
15
+ ## 0.81.1
16
+
17
+ Tue, 27 Jan 2026 19:33:59 GMT
18
+
19
+ ### Patches
20
+
21
+ - Add ability to customize native accessibility of custom native components (30809111+acoates-ms@users.noreply.github.com)
22
+
23
+ ## 0.81.0
24
+
25
+ Sat, 20 Dec 2025 12:02:33 GMT
26
+
27
+ ### Patches
28
+
29
+ - Promote 0.81 to latest (66076509+vineethkuttan@users.noreply.github.com)
30
+ - Bump @react-native-windows/fs to v0.81.0
31
+
16
32
  ## 0.81.0-preview.3
17
33
 
18
34
  Wed, 10 Dec 2025 18:44:30 GMT
@@ -49,7 +49,7 @@ struct ::_OBJECT_NAME_:: {
49
49
  ::_OBJECT_FIELDS_::};
50
50
  `;
51
51
  const eventEmitterMethodTemplate = ` void ::_EVENT_NAME_::(::_EVENT_OBJECT_TYPE_:: &value) const {
52
- m_eventEmitter.DispatchEvent(L"::_EVENT_NAME_NO_ON_::", [value](const winrt::Microsoft::ReactNative::IJSValueWriter writer) {
52
+ m_eventEmitter.DispatchEvent(L"::_EVENT_NAME_NO_ON_::", [&value](const winrt::Microsoft::ReactNative::IJSValueWriter writer) {
53
53
  winrt::Microsoft::ReactNative::WriteValue(writer, value);
54
54
  });
55
55
  }`;
@@ -118,6 +118,12 @@ struct Base::_COMPONENT_NAME_:: {
118
118
  winrt::Microsoft::ReactNative::ComponentViewUpdateMask /*mask*/) noexcept {
119
119
  }
120
120
 
121
+ // CreateAutomationPeer will only be called if this method is overridden
122
+ virtual winrt::Windows::Foundation::IInspectable CreateAutomationPeer(const winrt::Microsoft::ReactNative::ComponentView & /*view*/,
123
+ const winrt::Microsoft::ReactNative::CreateAutomationPeerArgs& /*args*/) noexcept {
124
+ return nullptr;
125
+ }
126
+
121
127
  ::_COMPONENT_VIEW_COMMAND_HANDLERS_::
122
128
 
123
129
  ::_COMPONENT_VIEW_COMMAND_HANDLER_::
@@ -198,6 +204,14 @@ void Register::_COMPONENT_NAME_::NativeComponent(
198
204
  });
199
205
  }
200
206
 
207
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::CreateAutomationPeer != &Base::_COMPONENT_NAME_::<TUserData>::CreateAutomationPeer) {
208
+ builder.SetCreateAutomationPeerHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
209
+ const winrt::Microsoft::ReactNative::CreateAutomationPeerArgs& args) noexcept {
210
+ auto userData = view.UserData().as<TUserData>();
211
+ return userData->CreateAutomationPeer(view, args);
212
+ });
213
+ }
214
+
201
215
  compBuilder.SetViewComponentViewInitializer([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
202
216
  auto userData = winrt::make_self<TUserData>();
203
217
  if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::Initialize != &Base::_COMPONENT_NAME_::<TUserData>::Initialize) {
@@ -274,7 +288,10 @@ function createComponentGenerator({ namespace, cppStringType, }) {
274
288
  .join('\n');
275
289
  const propInitializers = componentShape.props
276
290
  .map(prop => {
277
- return ` ${prop.name} = cloneFromProps->${prop.name};`;
291
+ if (prop.typeAnnotation.type === 'MixedTypeAnnotation')
292
+ return ` ${prop.name} = cloneFromProps->${prop.name}.Copy();`;
293
+ else
294
+ return ` ${prop.name} = cloneFromProps->${prop.name};`;
278
295
  })
279
296
  .join('\n');
280
297
  const propObjectTypes = propObjectAliases.jobs
@@ -316,7 +333,20 @@ function createComponentGenerator({ namespace, cppStringType, }) {
316
333
  .replace(/::_EVENT_OBJECT_TYPE_::/g, event.name.replace('on', 'On'));
317
334
  })
318
335
  .join('\n\n');
336
+ const eventObjectUsings = eventObjectAliases.jobs
337
+ .map(eventObjectTypeName => {
338
+ return ` using ${eventObjectTypeName.replace('on', 'On')} = ${(0, AliasManaging_1.getAliasCppName)(eventObjectTypeName) /*.replace('_on', '_On')*/};`;
339
+ })
340
+ .join('\n');
341
+ // Collect all the alias types for the event objects so that we can generate the unnamed types within objects
342
+ eventObjectAliases.jobs.forEach(eventObjectTypeName => {
343
+ const eventObjectType = eventObjectAliases.types[eventObjectTypeName];
344
+ eventObjectType.properties.forEach(property => {
345
+ (0, PropObjectTypes_1.translateComponentEventType)(property.typeAnnotation, eventObjectAliases, eventObjectTypeName, cppCodegenOptions);
346
+ });
347
+ });
319
348
  const eventObjects = eventObjectAliases.jobs
349
+ .reverse()
320
350
  .map(eventObjectTypeName => {
321
351
  const eventObjectType = eventObjectAliases.types[eventObjectTypeName];
322
352
  const eventObjectFields = eventObjectType.properties
@@ -329,15 +359,10 @@ function createComponentGenerator({ namespace, cppStringType, }) {
329
359
  })
330
360
  .join('\n');
331
361
  return eventsObjectTemplate
332
- .replace(/::_OBJECT_NAME_::/g, `${componentName}_${eventObjectTypeName.replace('on', 'On')}`)
362
+ .replace(/::_OBJECT_NAME_::/g, (0, AliasManaging_1.getAliasCppName)(eventObjectTypeName) /*.replace('_on', '_On')*/)
333
363
  .replace(/::_OBJECT_FIELDS_::/g, eventObjectFields);
334
364
  })
335
365
  .join('\n');
336
- const eventObjectUsings = eventObjectAliases.jobs
337
- .map(eventObjectTypeName => {
338
- return ` using ${eventObjectTypeName.replace('on', 'On')} = ${componentName}_${eventObjectTypeName.replace('on', 'On')};`;
339
- })
340
- .join('\n');
341
366
  const eventEmitter = eventEmitterTemplate
342
367
  .replace(/::_COMPONENT_EVENT_OBJECT_TYPES_::/g, eventObjects)
343
368
  .replace(/::_EVENT_EMITTER_METHODS_::/g, eventEmitterMethods)
@@ -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_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&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_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&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_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&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_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&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_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::Initialize != &Base::_COMPONENT_NAME_::<TUserData>::Initialize) {\n userData->Initialize(view);\n }\n view.UserData(*userData);\n });\n\n if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&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":"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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 // CreateAutomationPeer will only be called if this method is overridden\n virtual winrt::Windows::Foundation::IInspectable CreateAutomationPeer(const winrt::Microsoft::ReactNative::ComponentView & /*view*/,\n const winrt::Microsoft::ReactNative::CreateAutomationPeerArgs& /*args*/) noexcept {\n return nullptr;\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_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&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_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&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_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&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_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&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 if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::CreateAutomationPeer != &Base::_COMPONENT_NAME_::<TUserData>::CreateAutomationPeer) {\n builder.SetCreateAutomationPeerHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,\n const winrt::Microsoft::ReactNative::CreateAutomationPeerArgs& args) noexcept {\n auto userData = view.UserData().as<TUserData>();\n return userData->CreateAutomationPeer(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_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::Initialize != &Base::_COMPONENT_NAME_::<TUserData>::Initialize) {\n userData->Initialize(view);\n }\n view.UserData(*userData);\n });\n\n if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&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 if (prop.typeAnnotation.type === 'MixedTypeAnnotation')\n return ` ${prop.name} = cloneFromProps->${prop.name}.Copy();`;\n else 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 eventObjectUsings = eventObjectAliases.jobs\n .map(eventObjectTypeName => {\n return ` using ${eventObjectTypeName.replace('on', 'On')} = ${\n getAliasCppName(eventObjectTypeName) /*.replace('_on', '_On')*/\n };`;\n })\n .join('\\n');\n\n // Collect all the alias types for the event objects so that we can generate the unnamed types within objects\n eventObjectAliases.jobs.forEach(eventObjectTypeName => {\n const eventObjectType =\n eventObjectAliases.types[eventObjectTypeName]!;\n eventObjectType.properties.forEach(property => {\n translateComponentEventType(\n property.typeAnnotation,\n eventObjectAliases,\n eventObjectTypeName,\n cppCodegenOptions,\n );\n });\n });\n\n const eventObjects = eventObjectAliases.jobs\n .reverse()\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 getAliasCppName(eventObjectTypeName) /*.replace('_on', '_On')*/,\n )\n .replace(/::_OBJECT_FIELDS_::/g, eventObjectFields);\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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-native-windows/codegen",
3
- "version": "0.81.0",
3
+ "version": "0.81.2",
4
4
  "description": "Generators for react-native-codegen targeting react-native-windows",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "repository": {
@@ -70,7 +70,7 @@ struct ::_OBJECT_NAME_:: {
70
70
  `;
71
71
 
72
72
  const eventEmitterMethodTemplate = ` void ::_EVENT_NAME_::(::_EVENT_OBJECT_TYPE_:: &value) const {
73
- m_eventEmitter.DispatchEvent(L"::_EVENT_NAME_NO_ON_::", [value](const winrt::Microsoft::ReactNative::IJSValueWriter writer) {
73
+ m_eventEmitter.DispatchEvent(L"::_EVENT_NAME_NO_ON_::", [&value](const winrt::Microsoft::ReactNative::IJSValueWriter writer) {
74
74
  winrt::Microsoft::ReactNative::WriteValue(writer, value);
75
75
  });
76
76
  }`;
@@ -141,6 +141,12 @@ struct Base::_COMPONENT_NAME_:: {
141
141
  winrt::Microsoft::ReactNative::ComponentViewUpdateMask /*mask*/) noexcept {
142
142
  }
143
143
 
144
+ // CreateAutomationPeer will only be called if this method is overridden
145
+ virtual winrt::Windows::Foundation::IInspectable CreateAutomationPeer(const winrt::Microsoft::ReactNative::ComponentView & /*view*/,
146
+ const winrt::Microsoft::ReactNative::CreateAutomationPeerArgs& /*args*/) noexcept {
147
+ return nullptr;
148
+ }
149
+
144
150
  ::_COMPONENT_VIEW_COMMAND_HANDLERS_::
145
151
 
146
152
  ::_COMPONENT_VIEW_COMMAND_HANDLER_::
@@ -222,6 +228,14 @@ void Register::_COMPONENT_NAME_::NativeComponent(
222
228
  });
223
229
  }
224
230
 
231
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::CreateAutomationPeer != &Base::_COMPONENT_NAME_::<TUserData>::CreateAutomationPeer) {
232
+ builder.SetCreateAutomationPeerHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
233
+ const winrt::Microsoft::ReactNative::CreateAutomationPeerArgs& args) noexcept {
234
+ auto userData = view.UserData().as<TUserData>();
235
+ return userData->CreateAutomationPeer(view, args);
236
+ });
237
+ }
238
+
225
239
  compBuilder.SetViewComponentViewInitializer([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
226
240
  auto userData = winrt::make_self<TUserData>();
227
241
  if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::Initialize != &Base::_COMPONENT_NAME_::<TUserData>::Initialize) {
@@ -330,7 +344,9 @@ export function createComponentGenerator({
330
344
 
331
345
  const propInitializers = componentShape.props
332
346
  .map(prop => {
333
- return ` ${prop.name} = cloneFromProps->${prop.name};`;
347
+ if (prop.typeAnnotation.type === 'MixedTypeAnnotation')
348
+ return ` ${prop.name} = cloneFromProps->${prop.name}.Copy();`;
349
+ else return ` ${prop.name} = cloneFromProps->${prop.name};`;
334
350
  })
335
351
  .join('\n');
336
352
 
@@ -400,7 +416,30 @@ export function createComponentGenerator({
400
416
  })
401
417
  .join('\n\n');
402
418
 
419
+ const eventObjectUsings = eventObjectAliases.jobs
420
+ .map(eventObjectTypeName => {
421
+ return ` using ${eventObjectTypeName.replace('on', 'On')} = ${
422
+ getAliasCppName(eventObjectTypeName) /*.replace('_on', '_On')*/
423
+ };`;
424
+ })
425
+ .join('\n');
426
+
427
+ // Collect all the alias types for the event objects so that we can generate the unnamed types within objects
428
+ eventObjectAliases.jobs.forEach(eventObjectTypeName => {
429
+ const eventObjectType =
430
+ eventObjectAliases.types[eventObjectTypeName]!;
431
+ eventObjectType.properties.forEach(property => {
432
+ translateComponentEventType(
433
+ property.typeAnnotation,
434
+ eventObjectAliases,
435
+ eventObjectTypeName,
436
+ cppCodegenOptions,
437
+ );
438
+ });
439
+ });
440
+
403
441
  const eventObjects = eventObjectAliases.jobs
442
+ .reverse()
404
443
  .map(eventObjectTypeName => {
405
444
  const eventObjectType =
406
445
  eventObjectAliases.types[eventObjectTypeName]!;
@@ -423,21 +462,12 @@ export function createComponentGenerator({
423
462
  return eventsObjectTemplate
424
463
  .replace(
425
464
  /::_OBJECT_NAME_::/g,
426
- `${componentName}_${eventObjectTypeName.replace('on', 'On')}`,
465
+ getAliasCppName(eventObjectTypeName) /*.replace('_on', '_On')*/,
427
466
  )
428
467
  .replace(/::_OBJECT_FIELDS_::/g, eventObjectFields);
429
468
  })
430
469
  .join('\n');
431
470
 
432
- const eventObjectUsings = eventObjectAliases.jobs
433
- .map(eventObjectTypeName => {
434
- return ` using ${eventObjectTypeName.replace(
435
- 'on',
436
- 'On',
437
- )} = ${componentName}_${eventObjectTypeName.replace('on', 'On')};`;
438
- })
439
- .join('\n');
440
-
441
471
  const eventEmitter = eventEmitterTemplate
442
472
  .replace(/::_COMPONENT_EVENT_OBJECT_TYPES_::/g, eventObjects)
443
473
  .replace(/::_EVENT_EMITTER_METHODS_::/g, eventEmitterMethods)