diff --git a/.flowconfig b/.flowconfig index e19555fb71..79aef07b77 100644 --- a/.flowconfig +++ b/.flowconfig @@ -38,4 +38,4 @@ suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError [version] -^0.45.0 +^0.47.0 diff --git a/flow/react-native-host-hooks.js b/flow/react-native-host-hooks.js index bda205a2b6..d1c332fc9c 100644 --- a/flow/react-native-host-hooks.js +++ b/flow/react-native-host-hooks.js @@ -20,7 +20,7 @@ declare module 'deepFreezeAndThrowOnMutationInDev' { declare module 'flattenStyle' { } declare module 'InitializeCore' { } declare module 'RCTEventEmitter' { - declare function register() : void; + declare function register(mixed) : void; } declare module 'TextInputState' { declare function blurTextInput(object : any) : void; @@ -49,11 +49,19 @@ declare module 'UIManager' { addAtIndices : Array, removeAtIndices : Array ) : void; - declare function measure() : void; - declare function measureInWindow() : void; - declare function measureLayout() : void; - declare function removeRootView() : void; - declare function removeSubviewsFromContainerWithID() : void; + declare function measure(hostComponent: mixed, callback: Function) : void; + declare function measureInWindow( + nativeTag : ?number, + callback : Function + ) : void; + declare function measureLayout( + nativeTag : mixed, + nativeNode : number, + onFail : Function, + onSuccess : Function + ) : void; + declare function removeRootView(containerTag : number) : void; + declare function removeSubviewsFromContainerWithID(containerId : number) : void; declare function replaceExistingNonRootView() : void; declare function setChildren( containerTag : number, diff --git a/package.json b/package.json index 98bfddac87..79de79cb42 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "fbjs": "^0.8.9", "fbjs-scripts": "^0.6.0", "filesize": "^3.5.6", - "flow-bin": "^0.45.0", + "flow-bin": "^0.47.0", "git-branch": "^0.3.0", "glob": "^6.0.4", "glob-stream": "^6.1.0", diff --git a/src/renderers/dom/fiber/ReactDOMFiberComponent.js b/src/renderers/dom/fiber/ReactDOMFiberComponent.js index 948711f5b2..5c29bd810f 100644 --- a/src/renderers/dom/fiber/ReactDOMFiberComponent.js +++ b/src/renderers/dom/fiber/ReactDOMFiberComponent.js @@ -303,7 +303,7 @@ var ReactDOMFiberComponent = { }, createElement( - type: string, + type: *, props: Object, rootContainerElement: Element | Document, parentNamespace: string, @@ -341,6 +341,7 @@ var ReactDOMFiberComponent = { var firstChild = ((div.firstChild: any): HTMLScriptElement); domElement = div.removeChild(firstChild); } else if (props.is) { + // $FlowIssue `createElement` should be updated for Web Components domElement = ownerDocument.createElement(type, {is: props.is}); } else { // Separate else branch instead of using `props.is || undefined` above because of a Firefox bug. diff --git a/src/renderers/dom/fiber/wrappers/ReactDOMFiberInput.js b/src/renderers/dom/fiber/wrappers/ReactDOMFiberInput.js index 6d5387e256..17b0f3df02 100644 --- a/src/renderers/dom/fiber/wrappers/ReactDOMFiberInput.js +++ b/src/renderers/dom/fiber/wrappers/ReactDOMFiberInput.js @@ -201,7 +201,7 @@ var ReactDOMInput = { // Note: IE9 reports a number inputs as 'text', so check props instead. } else if (props.type === 'number') { // Simulate `input.valueAsNumber`. IE9 does not support it - var valueAsNumber = parseFloat(node.value, 10) || 0; + var valueAsNumber = parseFloat(node.value) || 0; // eslint-disable-next-line if (value != valueAsNumber) { diff --git a/src/renderers/shared/fiber/ReactFiberBeginWork.js b/src/renderers/shared/fiber/ReactFiberBeginWork.js index 8d9a8b4abb..f19f4adab4 100644 --- a/src/renderers/shared/fiber/ReactFiberBeginWork.js +++ b/src/renderers/shared/fiber/ReactFiberBeginWork.js @@ -66,7 +66,7 @@ if (__DEV__) { module.exports = function( config: HostConfig, hostContext: HostContext, - hydrationContext: HydrationContext, + hydrationContext: HydrationContext, scheduleUpdate: (fiber: Fiber, priorityLevel: PriorityLevel) => void, getPriorityContext: (fiber: Fiber, forceAsync: boolean) => PriorityLevel, ) { diff --git a/src/renderers/shared/fiber/ReactFiberCompleteWork.js b/src/renderers/shared/fiber/ReactFiberCompleteWork.js index 092c825e88..9e95547b48 100644 --- a/src/renderers/shared/fiber/ReactFiberCompleteWork.js +++ b/src/renderers/shared/fiber/ReactFiberCompleteWork.js @@ -47,7 +47,7 @@ var invariant = require('fbjs/lib/invariant'); module.exports = function( config: HostConfig, hostContext: HostContext, - hydrationContext: HydrationContext, + hydrationContext: HydrationContext, ) { const { createInstance, @@ -340,10 +340,7 @@ module.exports = function( let textInstance; let wasHydrated = popHydrationState(workInProgress); if (wasHydrated) { - textInstance = hydrateHostTextInstance( - workInProgress, - rootContainerInstance, - ); + textInstance = hydrateHostTextInstance(workInProgress); } else { textInstance = createTextInstance( newText, diff --git a/src/renderers/shared/fiber/ReactFiberHydrationContext.js b/src/renderers/shared/fiber/ReactFiberHydrationContext.js index 2237e368a0..bb0e3e55c3 100644 --- a/src/renderers/shared/fiber/ReactFiberHydrationContext.js +++ b/src/renderers/shared/fiber/ReactFiberHydrationContext.js @@ -22,18 +22,18 @@ const {Deletion, Placement} = require('ReactTypeOfSideEffect'); const {createFiberFromHostInstanceForDeletion} = require('ReactFiber'); -export type HydrationContext = { +export type HydrationContext = { enterHydrationState(fiber: Fiber): boolean, resetHydrationState(): void, tryToClaimNextHydratableInstance(fiber: Fiber): void, - hydrateHostInstance(fiber: Fiber): I, + hydrateHostInstance(fiber: Fiber, rootContainerInstance: C): I, hydrateHostTextInstance(fiber: Fiber): TI, popHydrationState(fiber: Fiber): boolean, }; module.exports = function( config: HostConfig, -): HydrationContext { +): HydrationContext { const { shouldSetTextContent, canHydrateInstance, @@ -147,7 +147,7 @@ module.exports = function( nextHydratableInstance = getFirstHydratableChild(nextInstance); } - function hydrateHostInstance(fiber: Fiber, rootContainerInstance: any): I { + function hydrateHostInstance(fiber: Fiber, rootContainerInstance: C): I { const instance: I = fiber.stateNode; hydrateInstance( instance, diff --git a/src/renderers/shared/fiber/ReactFiberScheduler.js b/src/renderers/shared/fiber/ReactFiberScheduler.js index 998f4484bf..e010390bc8 100644 --- a/src/renderers/shared/fiber/ReactFiberScheduler.js +++ b/src/renderers/shared/fiber/ReactFiberScheduler.js @@ -146,9 +146,11 @@ module.exports = function( config: HostConfig, ) { const hostContext = ReactFiberHostContext(config); - const hydrationContext: HydrationContext = ReactFiberHydrationContext( - config, - ); + const hydrationContext: HydrationContext< + I, + TI, + C + > = ReactFiberHydrationContext(config); const {popHostContainer, popHostContext, resetHostContainer} = hostContext; const {beginWork, beginFailedWork} = ReactFiberBeginWork( config, diff --git a/yarn.lock b/yarn.lock index eeaca8f61b..8a138cd2c5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2287,9 +2287,9 @@ flat-cache@^1.2.1: graceful-fs "^4.1.2" write "^0.2.1" -flow-bin@^0.45.0: - version "0.45.0" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.45.0.tgz#009dd0f577a3f665c74ca8be827ae8c2dd8fd6b5" +flow-bin@^0.47.0: + version "0.47.0" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.47.0.tgz#a2a08ab3e0d1f1cb57d17e27b30b118b62fda367" flow-parser@0.43.0: version "0.43.0"