1. /**
    
  2.  * Copyright (c) Meta Platforms, Inc. and affiliates.
    
  3.  *
    
  4.  * This source code is licensed under the MIT license found in the
    
  5.  * LICENSE file in the root directory of this source tree.
    
  6.  *
    
  7.  * @flow
    
  8.  */
    
  9. 
    
  10. // This is a host config that's used for the `react-reconciler` package on npm.
    
  11. // It is only used by third-party renderers.
    
  12. //
    
  13. // Its API lets you pass the host config as an argument.
    
  14. // However, inside the `react-reconciler` we treat host config as a module.
    
  15. // This file is a shim between two worlds.
    
  16. //
    
  17. // It works because the `react-reconciler` bundle is wrapped in something like:
    
  18. //
    
  19. // module.exports = function ($$$config) {
    
  20. //   /* reconciler code */
    
  21. // }
    
  22. //
    
  23. // So `$$$config` looks like a global variable, but it's
    
  24. // really an argument to a top-level wrapping function.
    
  25. 
    
  26. declare var $$$config: any;
    
  27. export opaque type Type = mixed; // eslint-disable-line no-undef
    
  28. export opaque type Props = mixed; // eslint-disable-line no-undef
    
  29. export opaque type Container = mixed; // eslint-disable-line no-undef
    
  30. export opaque type Instance = mixed; // eslint-disable-line no-undef
    
  31. export opaque type TextInstance = mixed; // eslint-disable-line no-undef
    
  32. export opaque type SuspenseInstance = mixed; // eslint-disable-line no-undef
    
  33. export opaque type HydratableInstance = mixed; // eslint-disable-line no-undef
    
  34. export opaque type PublicInstance = mixed; // eslint-disable-line no-undef
    
  35. export opaque type HostContext = mixed; // eslint-disable-line no-undef
    
  36. export opaque type UpdatePayload = mixed; // eslint-disable-line no-undef
    
  37. export opaque type ChildSet = mixed; // eslint-disable-line no-undef
    
  38. export opaque type TimeoutHandle = mixed; // eslint-disable-line no-undef
    
  39. export opaque type NoTimeout = mixed; // eslint-disable-line no-undef
    
  40. export opaque type RendererInspectionConfig = mixed; // eslint-disable-line no-undef
    
  41. export opaque type TransitionStatus = mixed; // eslint-disable-line no-undef
    
  42. export type EventResponder = any;
    
  43. 
    
  44. export const getPublicInstance = $$$config.getPublicInstance;
    
  45. export const getRootHostContext = $$$config.getRootHostContext;
    
  46. export const getChildHostContext = $$$config.getChildHostContext;
    
  47. export const prepareForCommit = $$$config.prepareForCommit;
    
  48. export const resetAfterCommit = $$$config.resetAfterCommit;
    
  49. export const createInstance = $$$config.createInstance;
    
  50. export const appendInitialChild = $$$config.appendInitialChild;
    
  51. export const finalizeInitialChildren = $$$config.finalizeInitialChildren;
    
  52. export const shouldSetTextContent = $$$config.shouldSetTextContent;
    
  53. export const createTextInstance = $$$config.createTextInstance;
    
  54. export const scheduleTimeout = $$$config.scheduleTimeout;
    
  55. export const cancelTimeout = $$$config.cancelTimeout;
    
  56. export const noTimeout = $$$config.noTimeout;
    
  57. export const isPrimaryRenderer = $$$config.isPrimaryRenderer;
    
  58. export const warnsIfNotActing = $$$config.warnsIfNotActing;
    
  59. export const supportsMutation = $$$config.supportsMutation;
    
  60. export const supportsPersistence = $$$config.supportsPersistence;
    
  61. export const supportsHydration = $$$config.supportsHydration;
    
  62. export const getInstanceFromNode = $$$config.getInstanceFromNode;
    
  63. export const beforeActiveInstanceBlur = $$$config.beforeActiveInstanceBlur;
    
  64. export const afterActiveInstanceBlur = $$$config.afterActiveInstanceBlur;
    
  65. export const preparePortalMount = $$$config.preparePortalMount;
    
  66. export const prepareScopeUpdate = $$$config.prepareScopeUpdate;
    
  67. export const getInstanceFromScope = $$$config.getInstanceFromScope;
    
  68. export const getCurrentEventPriority = $$$config.getCurrentEventPriority;
    
  69. export const shouldAttemptEagerTransition =
    
  70.   $$$config.shouldAttemptEagerTransition;
    
  71. export const detachDeletedInstance = $$$config.detachDeletedInstance;
    
  72. export const requestPostPaintCallback = $$$config.requestPostPaintCallback;
    
  73. export const maySuspendCommit = $$$config.maySuspendCommit;
    
  74. export const preloadInstance = $$$config.preloadInstance;
    
  75. export const startSuspendingCommit = $$$config.startSuspendingCommit;
    
  76. export const suspendInstance = $$$config.suspendInstance;
    
  77. export const waitForCommitToBeReady = $$$config.waitForCommitToBeReady;
    
  78. export const NotPendingTransition = $$$config.NotPendingTransition;
    
  79. 
    
  80. // -------------------
    
  81. //      Microtasks
    
  82. //     (optional)
    
  83. // -------------------
    
  84. export const supportsMicrotasks = $$$config.supportsMicrotasks;
    
  85. export const scheduleMicrotask = $$$config.scheduleMicrotask;
    
  86. 
    
  87. // -------------------
    
  88. //      Test selectors
    
  89. //     (optional)
    
  90. // -------------------
    
  91. export const supportsTestSelectors = $$$config.supportsTestSelectors;
    
  92. export const findFiberRoot = $$$config.findFiberRoot;
    
  93. export const getBoundingRect = $$$config.getBoundingRect;
    
  94. export const getTextContent = $$$config.getTextContent;
    
  95. export const isHiddenSubtree = $$$config.isHiddenSubtree;
    
  96. export const matchAccessibilityRole = $$$config.matchAccessibilityRole;
    
  97. export const setFocusIfFocusable = $$$config.setFocusIfFocusable;
    
  98. export const setupIntersectionObserver = $$$config.setupIntersectionObserver;
    
  99. 
    
  100. // -------------------
    
  101. //      Mutation
    
  102. //     (optional)
    
  103. // -------------------
    
  104. export const appendChild = $$$config.appendChild;
    
  105. export const appendChildToContainer = $$$config.appendChildToContainer;
    
  106. export const commitTextUpdate = $$$config.commitTextUpdate;
    
  107. export const commitMount = $$$config.commitMount;
    
  108. export const commitUpdate = $$$config.commitUpdate;
    
  109. export const insertBefore = $$$config.insertBefore;
    
  110. export const insertInContainerBefore = $$$config.insertInContainerBefore;
    
  111. export const removeChild = $$$config.removeChild;
    
  112. export const removeChildFromContainer = $$$config.removeChildFromContainer;
    
  113. export const resetTextContent = $$$config.resetTextContent;
    
  114. export const hideInstance = $$$config.hideInstance;
    
  115. export const hideTextInstance = $$$config.hideTextInstance;
    
  116. export const unhideInstance = $$$config.unhideInstance;
    
  117. export const unhideTextInstance = $$$config.unhideTextInstance;
    
  118. export const clearContainer = $$$config.clearContainer;
    
  119. 
    
  120. // -------------------
    
  121. //     Persistence
    
  122. //     (optional)
    
  123. // -------------------
    
  124. export const cloneInstance = $$$config.cloneInstance;
    
  125. export const createContainerChildSet = $$$config.createContainerChildSet;
    
  126. export const appendChildToContainerChildSet =
    
  127.   $$$config.appendChildToContainerChildSet;
    
  128. export const finalizeContainerChildren = $$$config.finalizeContainerChildren;
    
  129. export const replaceContainerChildren = $$$config.replaceContainerChildren;
    
  130. export const cloneHiddenInstance = $$$config.cloneHiddenInstance;
    
  131. export const cloneHiddenTextInstance = $$$config.cloneHiddenTextInstance;
    
  132. 
    
  133. // -------------------
    
  134. //     Hydration
    
  135. //     (optional)
    
  136. // -------------------
    
  137. export const isHydratableText = $$$config.isHydratableText;
    
  138. export const isSuspenseInstancePending = $$$config.isSuspenseInstancePending;
    
  139. export const isSuspenseInstanceFallback = $$$config.isSuspenseInstanceFallback;
    
  140. export const getSuspenseInstanceFallbackErrorDetails =
    
  141.   $$$config.getSuspenseInstanceFallbackErrorDetails;
    
  142. export const registerSuspenseInstanceRetry =
    
  143.   $$$config.registerSuspenseInstanceRetry;
    
  144. export const canHydrateFormStateMarker = $$$config.canHydrateFormStateMarker;
    
  145. export const isFormStateMarkerMatching = $$$config.isFormStateMarkerMatching;
    
  146. export const getNextHydratableSibling = $$$config.getNextHydratableSibling;
    
  147. export const getFirstHydratableChild = $$$config.getFirstHydratableChild;
    
  148. export const getFirstHydratableChildWithinContainer =
    
  149.   $$$config.getFirstHydratableChildWithinContainer;
    
  150. export const getFirstHydratableChildWithinSuspenseInstance =
    
  151.   $$$config.getFirstHydratableChildWithinSuspenseInstance;
    
  152. export const canHydrateInstance = $$$config.canHydrateInstance;
    
  153. export const canHydrateTextInstance = $$$config.canHydrateTextInstance;
    
  154. export const canHydrateSuspenseInstance = $$$config.canHydrateSuspenseInstance;
    
  155. export const hydrateInstance = $$$config.hydrateInstance;
    
  156. export const hydrateTextInstance = $$$config.hydrateTextInstance;
    
  157. export const hydrateSuspenseInstance = $$$config.hydrateSuspenseInstance;
    
  158. export const getNextHydratableInstanceAfterSuspenseInstance =
    
  159.   $$$config.getNextHydratableInstanceAfterSuspenseInstance;
    
  160. export const commitHydratedContainer = $$$config.commitHydratedContainer;
    
  161. export const commitHydratedSuspenseInstance =
    
  162.   $$$config.commitHydratedSuspenseInstance;
    
  163. export const clearSuspenseBoundary = $$$config.clearSuspenseBoundary;
    
  164. export const clearSuspenseBoundaryFromContainer =
    
  165.   $$$config.clearSuspenseBoundaryFromContainer;
    
  166. export const shouldDeleteUnhydratedTailInstances =
    
  167.   $$$config.shouldDeleteUnhydratedTailInstances;
    
  168. export const didNotMatchHydratedContainerTextInstance =
    
  169.   $$$config.didNotMatchHydratedContainerTextInstance;
    
  170. export const didNotMatchHydratedTextInstance =
    
  171.   $$$config.didNotMatchHydratedTextInstance;
    
  172. export const didNotHydrateInstanceWithinContainer =
    
  173.   $$$config.didNotHydrateInstanceWithinContainer;
    
  174. export const didNotHydrateInstanceWithinSuspenseInstance =
    
  175.   $$$config.didNotHydrateInstanceWithinSuspenseInstance;
    
  176. export const didNotHydrateInstance = $$$config.didNotHydrateInstance;
    
  177. export const didNotFindHydratableInstanceWithinContainer =
    
  178.   $$$config.didNotFindHydratableInstanceWithinContainer;
    
  179. export const didNotFindHydratableTextInstanceWithinContainer =
    
  180.   $$$config.didNotFindHydratableTextInstanceWithinContainer;
    
  181. export const didNotFindHydratableSuspenseInstanceWithinContainer =
    
  182.   $$$config.didNotFindHydratableSuspenseInstanceWithinContainer;
    
  183. export const didNotFindHydratableInstanceWithinSuspenseInstance =
    
  184.   $$$config.didNotFindHydratableInstanceWithinSuspenseInstance;
    
  185. export const didNotFindHydratableTextInstanceWithinSuspenseInstance =
    
  186.   $$$config.didNotFindHydratableTextInstanceWithinSuspenseInstance;
    
  187. export const didNotFindHydratableSuspenseInstanceWithinSuspenseInstance =
    
  188.   $$$config.didNotFindHydratableSuspenseInstanceWithinSuspenseInstance;
    
  189. export const didNotFindHydratableInstance =
    
  190.   $$$config.didNotFindHydratableInstance;
    
  191. export const didNotFindHydratableTextInstance =
    
  192.   $$$config.didNotFindHydratableTextInstance;
    
  193. export const didNotFindHydratableSuspenseInstance =
    
  194.   $$$config.didNotFindHydratableSuspenseInstance;
    
  195. export const errorHydratingContainer = $$$config.errorHydratingContainer;
    
  196. 
    
  197. // -------------------
    
  198. //     Resources
    
  199. //     (optional)
    
  200. // -------------------
    
  201. export type HoistableRoot = mixed;
    
  202. export type Resource = mixed; // eslint-disable-line no-undef
    
  203. export const supportsResources = $$$config.supportsResources;
    
  204. export const isHostHoistableType = $$$config.isHostHoistableType;
    
  205. export const getHoistableRoot = $$$config.getHoistableRoot;
    
  206. export const getResource = $$$config.getResource;
    
  207. export const acquireResource = $$$config.acquireResource;
    
  208. export const releaseResource = $$$config.releaseResource;
    
  209. export const hydrateHoistable = $$$config.hydrateHoistable;
    
  210. export const mountHoistable = $$$config.mountHoistable;
    
  211. export const unmountHoistable = $$$config.unmountHoistable;
    
  212. export const createHoistableInstance = $$$config.createHoistableInstance;
    
  213. export const prepareToCommitHoistables = $$$config.prepareToCommitHoistables;
    
  214. export const mayResourceSuspendCommit = $$$config.mayResourceSuspendCommit;
    
  215. export const preloadResource = $$$config.preloadResource;
    
  216. export const suspendResource = $$$config.suspendResource;
    
  217. 
    
  218. // -------------------
    
  219. //     Singletons
    
  220. //     (optional)
    
  221. // -------------------
    
  222. export const supportsSingletons = $$$config.supportsSingletons;
    
  223. export const resolveSingletonInstance = $$$config.resolveSingletonInstance;
    
  224. export const clearSingleton = $$$config.clearSingleton;
    
  225. export const acquireSingletonInstance = $$$config.acquireSingletonInstance;
    
  226. export const releaseSingletonInstance = $$$config.releaseSingletonInstance;
    
  227. export const isHostSingletonType = $$$config.isHostSingletonType;