From 40adb1ff482bbb399e86d31ce00f6c99e0ee3f71 Mon Sep 17 00:00:00 2001 From: Marija Najdova Date: Tue, 14 Jan 2020 10:22:29 +0100 Subject: [PATCH 1/5] -fixed required order of ref hook --- .../src/components/Debug/FiberNavigator.ts | 44 ++++++++++++++----- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/packages/react/src/components/Debug/FiberNavigator.ts b/packages/react/src/components/Debug/FiberNavigator.ts index c94ef51b49..4a4bec8b61 100644 --- a/packages/react/src/components/Debug/FiberNavigator.ts +++ b/packages/react/src/components/Debug/FiberNavigator.ts @@ -324,13 +324,39 @@ class FiberNavigator { } get instance() { - return this.isClassComponent - ? this.__fiber.stateNode - : this.isFunctionComponent // TODO: assumes functional component w/useRef - ? this.__fiber.memoizedState && - this.__fiber.memoizedState.memoizedState && - this.__fiber.memoizedState.memoizedState.current - : null + if (this.isClassComponent) { + return this.__fiber.stateNode + } + + if (this.isFunctionComponent) { + // assumes functional component w/useRef + return this.findDebugHookState(this.__fiber.memoizedState) + } + + return null + } + + /** + * Hooks state is represented by a recursive structure where: + * - `memoizedState` is a current value if applicable + * - `next` is next hook in order + * @param node - fiber + */ + findDebugHookState(node) { + if ( + node && + node.memoizedState && + node.memoizedState.current && + node.memoizedState.current.fluentUIDebug + ) { + return node.memoizedState.current + } + + if (node === null || node.next === null) { + return null + } + + return this.findDebugHookState(node.next) } get reactComponent() { @@ -358,10 +384,6 @@ class FiberNavigator { return !!fiberNav && fiberNav.instance === this.instance } - usesHook(name) { - return this.__fiber._debugHookTypes.some(hook => hook === name) - } - find(condition, move) { let fiber: FiberNavigator = FiberNavigator.fromFiber(this.__fiber) From f0dfdff66b2dd0c4c6a7eb4ce8b4d65b50841163 Mon Sep 17 00:00:00 2001 From: Marija Najdova Date: Tue, 14 Jan 2020 10:29:48 +0100 Subject: [PATCH 2/5] -updated changelog --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index aaad14734d..8fd255319f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,9 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm ### Fixes - Fix event lister leak in `FocusZone` @miroslavstastny ([#2227](https://github.com/microsoft/fluent-ui-react/pull/2227)) +### Features +- Allow `useRef` hook used for storing debugging data to be defined in any order with other hooks in functional components @layershifter, @mnajdova ([2236](https://github.com/microsoft/fluent-ui-react/pull/2236)) + ## [v0.43.0](https://github.com/microsoft/fluent-ui-react/tree/v0.43.0) (2020-01-08) [Compare changes](https://github.com/microsoft/fluent-ui-react/compare/v0.42.0..v0.43.0) From 231e67ba163a5d3429ba7ff168d85e4f9da0037b Mon Sep 17 00:00:00 2001 From: Marija Najdova Date: Tue, 14 Jan 2020 10:48:23 +0100 Subject: [PATCH 3/5] -fixed changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fd255319f..e357a2af9b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,7 +18,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm ## [Unreleased] ### BREAKING CHANGES -- Add `@fluentui/styles` package for all styles' related utilities and TS types @layershifter, @mnajdova ([#2222](https://github.com/microsoft/fluent-ui-react/pull/2222)) +- Add `@fluentui/styles` package for all styles' related utilities and TS types @layershifter ([#2222](https://github.com/microsoft/fluent-ui-react/pull/2222)) ### Fixes - Fix event lister leak in `FocusZone` @miroslavstastny ([#2227](https://github.com/microsoft/fluent-ui-react/pull/2227)) From 9ae7264bb7a2f4969eb8c0cdfe0ad25c0183b785 Mon Sep 17 00:00:00 2001 From: Marija Najdova Date: Tue, 14 Jan 2020 10:50:13 +0100 Subject: [PATCH 4/5] -fixed changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e357a2af9b..8fd255319f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,7 +18,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm ## [Unreleased] ### BREAKING CHANGES -- Add `@fluentui/styles` package for all styles' related utilities and TS types @layershifter ([#2222](https://github.com/microsoft/fluent-ui-react/pull/2222)) +- Add `@fluentui/styles` package for all styles' related utilities and TS types @layershifter, @mnajdova ([#2222](https://github.com/microsoft/fluent-ui-react/pull/2222)) ### Fixes - Fix event lister leak in `FocusZone` @miroslavstastny ([#2227](https://github.com/microsoft/fluent-ui-react/pull/2227)) From 23b233ad76b9aa2f7dbef2437f0a7a23cc65b630 Mon Sep 17 00:00:00 2001 From: Marija Najdova Date: Tue, 14 Jan 2020 11:23:03 +0100 Subject: [PATCH 5/5] Update CHANGELOG.md Co-Authored-By: Oleksandr Fediashov --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fd255319f..24b31fe081 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,7 +24,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm - Fix event lister leak in `FocusZone` @miroslavstastny ([#2227](https://github.com/microsoft/fluent-ui-react/pull/2227)) ### Features -- Allow `useRef` hook used for storing debugging data to be defined in any order with other hooks in functional components @layershifter, @mnajdova ([2236](https://github.com/microsoft/fluent-ui-react/pull/2236)) +- Allow `useRef` hook used for storing debugging data to be defined in any order with other hooks in functional components @layershifter, @mnajdova ([#2236](https://github.com/microsoft/fluent-ui-react/pull/2236)) ## [v0.43.0](https://github.com/microsoft/fluent-ui-react/tree/v0.43.0) (2020-01-08)