| 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 const $$$config: any; |
| 27 | export opaque type Type = mixed; |
| 28 | export opaque type Props = mixed; |
| 29 | export opaque type Container = mixed; |
| 30 | export opaque type Instance = mixed; |
| 31 | export opaque type TextInstance = mixed; |
| 32 | export opaque type ActivityInstance = mixed; |
| 33 | export opaque type SuspenseInstance = mixed; |
| 34 | export opaque type HydratableInstance = mixed; |
| 35 | export opaque type PublicInstance = mixed; |
| 36 | export opaque type HostContext = mixed; |
| 37 | export opaque type UpdatePayload = mixed; |
| 38 | export opaque type ChildSet = mixed; |
| 39 | export opaque type TimeoutHandle = mixed; |
| 40 | export opaque type NoTimeout = mixed; |
| 41 | export opaque type RendererInspectionConfig = mixed; |
| 42 | export opaque type TransitionStatus = mixed; |
| 43 | export opaque type FormInstance = mixed; |
| 44 | export opaque type SuspendedState = mixed; |
| 45 | export type RunningViewTransition = mixed; |
| 46 | export type ViewTransitionInstance = null | {name: string, ...}; |
| 47 | export opaque type InstanceMeasurement = mixed; |
| 48 | export type EventResponder = any; |
| 49 | export type GestureTimeline = any; |
| 50 | export type FragmentInstanceType = null; |
| 51 | |
| 52 | export const rendererVersion = $$$config.rendererVersion; |
| 53 | export const rendererPackageName = $$$config.rendererPackageName; |
| 54 | export const extraDevToolsConfig = $$$config.extraDevToolsConfig; |
| 55 | |
| 56 | export const getPublicInstance = $$$config.getPublicInstance; |
| 57 | export const getRootHostContext = $$$config.getRootHostContext; |
| 58 | export const getChildHostContext = $$$config.getChildHostContext; |
| 59 | export const prepareForCommit = $$$config.prepareForCommit; |
| 60 | export const resetAfterCommit = $$$config.resetAfterCommit; |
| 61 | export const createInstance = $$$config.createInstance; |
| 62 | export const cloneMutableInstance = $$$config.cloneMutableInstance; |
| 63 | export const appendInitialChild = $$$config.appendInitialChild; |
| 64 | export const finalizeInitialChildren = $$$config.finalizeInitialChildren; |
| 65 | export const shouldSetTextContent = $$$config.shouldSetTextContent; |
| 66 | export const createTextInstance = $$$config.createTextInstance; |
| 67 | export const cloneMutableTextInstance = $$$config.cloneMutableTextInstance; |
| 68 | export const scheduleTimeout = $$$config.scheduleTimeout; |
| 69 | export const cancelTimeout = $$$config.cancelTimeout; |
| 70 | export const noTimeout = $$$config.noTimeout; |
| 71 | export const isPrimaryRenderer = $$$config.isPrimaryRenderer; |
| 72 | export const warnsIfNotActing = $$$config.warnsIfNotActing; |
| 73 | export const supportsMutation = $$$config.supportsMutation; |
| 74 | export const supportsPersistence = $$$config.supportsPersistence; |
| 75 | export const supportsHydration = $$$config.supportsHydration; |
| 76 | export const getInstanceFromNode = $$$config.getInstanceFromNode; |
| 77 | export const beforeActiveInstanceBlur = $$$config.beforeActiveInstanceBlur; |
| 78 | export const afterActiveInstanceBlur = $$$config.afterActiveInstanceBlur; |
| 79 | export const preparePortalMount = $$$config.preparePortalMount; |
| 80 | export const prepareScopeUpdate = $$$config.prepareScopeUpdate; |
| 81 | export const getInstanceFromScope = $$$config.getInstanceFromScope; |
| 82 | export const setCurrentUpdatePriority = $$$config.setCurrentUpdatePriority; |
| 83 | export const getCurrentUpdatePriority = $$$config.getCurrentUpdatePriority; |
| 84 | export const resolveUpdatePriority = $$$config.resolveUpdatePriority; |
| 85 | export const trackSchedulerEvent = $$$config.trackSchedulerEvent; |
| 86 | export const resolveEventType = $$$config.resolveEventType; |
| 87 | export const resolveEventTimeStamp = $$$config.resolveEventTimeStamp; |
| 88 | export const shouldAttemptEagerTransition = |
| 89 | $$$config.shouldAttemptEagerTransition; |
| 90 | export const detachDeletedInstance = $$$config.detachDeletedInstance; |
| 91 | export const requestPostPaintCallback = $$$config.requestPostPaintCallback; |
| 92 | export const maySuspendCommit = $$$config.maySuspendCommit; |
| 93 | export const maySuspendCommitOnUpdate = $$$config.maySuspendCommitOnUpdate; |
| 94 | export const maySuspendCommitInSyncRender = |
| 95 | $$$config.maySuspendCommitInSyncRender; |
| 96 | export const preloadInstance = $$$config.preloadInstance; |
| 97 | export const startSuspendingCommit = $$$config.startSuspendingCommit; |
| 98 | export const suspendInstance = $$$config.suspendInstance; |
| 99 | export const suspendOnActiveViewTransition = |
| 100 | $$$config.suspendOnActiveViewTransition; |
| 101 | export const waitForCommitToBeReady = $$$config.waitForCommitToBeReady; |
| 102 | export const getSuspendedCommitReason = $$$config.getSuspendedCommitReason; |
| 103 | export const NotPendingTransition = $$$config.NotPendingTransition; |
| 104 | export const HostTransitionContext = $$$config.HostTransitionContext; |
| 105 | export const resetFormInstance = $$$config.resetFormInstance; |
| 106 | export const bindToConsole = $$$config.bindToConsole; |
| 107 | |
| 108 | // ------------------- |
| 109 | // Microtasks |
| 110 | // (optional) |
| 111 | // ------------------- |
| 112 | export const supportsMicrotasks = $$$config.supportsMicrotasks; |
| 113 | export const scheduleMicrotask = $$$config.scheduleMicrotask; |
| 114 | |
| 115 | // ------------------- |
| 116 | // Test selectors |
| 117 | // (optional) |
| 118 | // ------------------- |
| 119 | export const supportsTestSelectors = $$$config.supportsTestSelectors; |
| 120 | export const findFiberRoot = $$$config.findFiberRoot; |
| 121 | export const getBoundingRect = $$$config.getBoundingRect; |
| 122 | export const getTextContent = $$$config.getTextContent; |
| 123 | export const isHiddenSubtree = $$$config.isHiddenSubtree; |
| 124 | export const matchAccessibilityRole = $$$config.matchAccessibilityRole; |
| 125 | export const setFocusIfFocusable = $$$config.setFocusIfFocusable; |
| 126 | export const setupIntersectionObserver = $$$config.setupIntersectionObserver; |
| 127 | |
| 128 | // ------------------- |
| 129 | // Mutation |
| 130 | // (optional) |
| 131 | // ------------------- |
| 132 | export const appendChild = $$$config.appendChild; |
| 133 | export const appendChildToContainer = $$$config.appendChildToContainer; |
| 134 | export const commitTextUpdate = $$$config.commitTextUpdate; |
| 135 | export const commitMount = $$$config.commitMount; |
| 136 | export const commitUpdate = $$$config.commitUpdate; |
| 137 | export const insertBefore = $$$config.insertBefore; |
| 138 | export const insertInContainerBefore = $$$config.insertInContainerBefore; |
| 139 | export const removeChild = $$$config.removeChild; |
| 140 | export const removeChildFromContainer = $$$config.removeChildFromContainer; |
| 141 | export const resetTextContent = $$$config.resetTextContent; |
| 142 | export const hideInstance = $$$config.hideInstance; |
| 143 | export const hideTextInstance = $$$config.hideTextInstance; |
| 144 | export const unhideInstance = $$$config.unhideInstance; |
| 145 | export const unhideTextInstance = $$$config.unhideTextInstance; |
| 146 | export const applyViewTransitionName = $$$config.applyViewTransitionName; |
| 147 | export const restoreViewTransitionName = $$$config.restoreViewTransitionName; |
| 148 | export const cancelViewTransitionName = $$$config.cancelViewTransitionName; |
| 149 | export const cancelRootViewTransitionName = |
| 150 | $$$config.cancelRootViewTransitionName; |
| 151 | export const restoreRootViewTransitionName = |
| 152 | $$$config.restoreRootViewTransitionName; |
| 153 | export const cloneRootViewTransitionContainer = |
| 154 | $$$config.cloneRootViewTransitionContainer; |
| 155 | export const removeRootViewTransitionClone = |
| 156 | $$$config.removeRootViewTransitionClone; |
| 157 | export const measureInstance = $$$config.measureInstance; |
| 158 | export const measureClonedInstance = $$$config.measureClonedInstance; |
| 159 | export const wasInstanceInViewport = $$$config.wasInstanceInViewport; |
| 160 | export const hasInstanceChanged = $$$config.hasInstanceChanged; |
| 161 | export const hasInstanceAffectedParent = $$$config.hasInstanceAffectedParent; |
| 162 | export const startViewTransition = $$$config.startViewTransition; |
| 163 | export const startGestureTransition = $$$config.startGestureTransition; |
| 164 | export const stopViewTransition = $$$config.stopViewTransition; |
| 165 | export const addViewTransitionFinishedListener = |
| 166 | $$$config.addViewTransitionFinishedListener; |
| 167 | export const getCurrentGestureOffset = $$$config.getCurrentGestureOffset; |
| 168 | export const createViewTransitionInstance = |
| 169 | $$$config.createViewTransitionInstance; |
| 170 | export const clearContainer = $$$config.clearContainer; |
| 171 | export const createFragmentInstance = $$$config.createFragmentInstance; |
| 172 | export const updateFragmentInstanceFiber = |
| 173 | $$$config.updateFragmentInstanceFiber; |
| 174 | export const commitNewChildToFragmentInstance = |
| 175 | $$$config.commitNewChildToFragmentInstance; |
| 176 | export const deleteChildFromFragmentInstance = |
| 177 | $$$config.deleteChildFromFragmentInstance; |
| 178 | |
| 179 | // ------------------- |
| 180 | // Persistence |
| 181 | // (optional) |
| 182 | // ------------------- |
| 183 | export const cloneInstance = $$$config.cloneInstance; |
| 184 | export const createContainerChildSet = $$$config.createContainerChildSet; |
| 185 | export const appendChildToContainerChildSet = |
| 186 | $$$config.appendChildToContainerChildSet; |
| 187 | export const finalizeContainerChildren = $$$config.finalizeContainerChildren; |
| 188 | export const replaceContainerChildren = $$$config.replaceContainerChildren; |
| 189 | export const cloneHiddenInstance = $$$config.cloneHiddenInstance; |
| 190 | export const cloneHiddenTextInstance = $$$config.cloneHiddenTextInstance; |
| 191 | |
| 192 | // ------------------- |
| 193 | // Hydration |
| 194 | // (optional) |
| 195 | // ------------------- |
| 196 | export const isSuspenseInstancePending = $$$config.isSuspenseInstancePending; |
| 197 | export const isSuspenseInstanceFallback = $$$config.isSuspenseInstanceFallback; |
| 198 | export const getSuspenseInstanceFallbackErrorDetails = |
| 199 | $$$config.getSuspenseInstanceFallbackErrorDetails; |
| 200 | export const registerSuspenseInstanceRetry = |
| 201 | $$$config.registerSuspenseInstanceRetry; |
| 202 | export const canHydrateFormStateMarker = $$$config.canHydrateFormStateMarker; |
| 203 | export const isFormStateMarkerMatching = $$$config.isFormStateMarkerMatching; |
| 204 | export const getNextHydratableSibling = $$$config.getNextHydratableSibling; |
| 205 | export const getNextHydratableSiblingAfterSingleton = |
| 206 | $$$config.getNextHydratableSiblingAfterSingleton; |
| 207 | export const getFirstHydratableChild = $$$config.getFirstHydratableChild; |
| 208 | export const getFirstHydratableChildWithinContainer = |
| 209 | $$$config.getFirstHydratableChildWithinContainer; |
| 210 | export const getFirstHydratableChildWithinActivityInstance = |
| 211 | $$$config.getFirstHydratableChildWithinActivityInstance; |
| 212 | export const getFirstHydratableChildWithinSuspenseInstance = |
| 213 | $$$config.getFirstHydratableChildWithinSuspenseInstance; |
| 214 | export const getFirstHydratableChildWithinSingleton = |
| 215 | $$$config.getFirstHydratableChildWithinSingleton; |
| 216 | export const canHydrateInstance = $$$config.canHydrateInstance; |
| 217 | export const canHydrateTextInstance = $$$config.canHydrateTextInstance; |
| 218 | export const canHydrateActivityInstance = $$$config.canHydrateActivityInstance; |
| 219 | export const canHydrateSuspenseInstance = $$$config.canHydrateSuspenseInstance; |
| 220 | export const hydrateInstance = $$$config.hydrateInstance; |
| 221 | export const hydrateTextInstance = $$$config.hydrateTextInstance; |
| 222 | export const hydrateActivityInstance = $$$config.hydrateActivityInstance; |
| 223 | export const hydrateSuspenseInstance = $$$config.hydrateSuspenseInstance; |
| 224 | export const getNextHydratableInstanceAfterActivityInstance = |
| 225 | $$$config.getNextHydratableInstanceAfterActivityInstance; |
| 226 | export const getNextHydratableInstanceAfterSuspenseInstance = |
| 227 | $$$config.getNextHydratableInstanceAfterSuspenseInstance; |
| 228 | export const commitHydratedInstance = $$$config.commitHydratedInstance; |
| 229 | export const commitHydratedContainer = $$$config.commitHydratedContainer; |
| 230 | export const commitHydratedActivityInstance = |
| 231 | $$$config.commitHydratedActivityInstance; |
| 232 | export const commitHydratedSuspenseInstance = |
| 233 | $$$config.commitHydratedSuspenseInstance; |
| 234 | export const finalizeHydratedChildren = $$$config.finalizeHydratedChildren; |
| 235 | export const flushHydrationEvents = $$$config.flushHydrationEvents; |
| 236 | export const clearActivityBoundary = $$$config.clearActivityBoundary; |
| 237 | export const clearSuspenseBoundary = $$$config.clearSuspenseBoundary; |
| 238 | export const clearActivityBoundaryFromContainer = |
| 239 | $$$config.clearActivityBoundaryFromContainer; |
| 240 | export const clearSuspenseBoundaryFromContainer = |
| 241 | $$$config.clearSuspenseBoundaryFromContainer; |
| 242 | export const hideDehydratedBoundary = $$$config.hideDehydratedBoundary; |
| 243 | export const unhideDehydratedBoundary = $$$config.unhideDehydratedBoundary; |
| 244 | export const shouldDeleteUnhydratedTailInstances = |
| 245 | $$$config.shouldDeleteUnhydratedTailInstances; |
| 246 | export const diffHydratedPropsForDevWarnings = |
| 247 | $$$config.diffHydratedPropsForDevWarnings; |
| 248 | export const diffHydratedTextForDevWarnings = |
| 249 | $$$config.diffHydratedTextForDevWarnings; |
| 250 | export const describeHydratableInstanceForDevWarnings = |
| 251 | $$$config.describeHydratableInstanceForDevWarnings; |
| 252 | export const validateHydratableInstance = $$$config.validateHydratableInstance; |
| 253 | export const validateHydratableTextInstance = |
| 254 | $$$config.validateHydratableTextInstance; |
| 255 | |
| 256 | // ------------------- |
| 257 | // Resources |
| 258 | // (optional) |
| 259 | // ------------------- |
| 260 | export type HoistableRoot = mixed; |
| 261 | export type Resource = mixed; |
| 262 | export const supportsResources = $$$config.supportsResources; |
| 263 | export const isHostHoistableType = $$$config.isHostHoistableType; |
| 264 | export const getHoistableRoot = $$$config.getHoistableRoot; |
| 265 | export const getResource = $$$config.getResource; |
| 266 | export const acquireResource = $$$config.acquireResource; |
| 267 | export const releaseResource = $$$config.releaseResource; |
| 268 | export const hydrateHoistable = $$$config.hydrateHoistable; |
| 269 | export const mountHoistable = $$$config.mountHoistable; |
| 270 | export const unmountHoistable = $$$config.unmountHoistable; |
| 271 | export const createHoistableInstance = $$$config.createHoistableInstance; |
| 272 | export const prepareToCommitHoistables = $$$config.prepareToCommitHoistables; |
| 273 | export const mayResourceSuspendCommit = $$$config.mayResourceSuspendCommit; |
| 274 | export const preloadResource = $$$config.preloadResource; |
| 275 | export const suspendResource = $$$config.suspendResource; |
| 276 | |
| 277 | // ------------------- |
| 278 | // Singletons |
| 279 | // (optional) |
| 280 | // ------------------- |
| 281 | export const supportsSingletons = $$$config.supportsSingletons; |
| 282 | export const resolveSingletonInstance = $$$config.resolveSingletonInstance; |
| 283 | export const acquireSingletonInstance = $$$config.acquireSingletonInstance; |
| 284 | export const releaseSingletonInstance = $$$config.releaseSingletonInstance; |
| 285 | export const isHostSingletonType = $$$config.isHostSingletonType; |
| 286 | export const isSingletonScope = $$$config.isSingletonScope; |