diff --git a/.babelrc b/.babelrc
deleted file mode 100644
index 8567e4e87..000000000
--- a/.babelrc
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "presets": ["airbnb", "@babel/preset-typescript"]
-}
\ No newline at end of file
diff --git a/.eslintrc b/.eslintrc
index 4deec5062..7cc3223f3 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -1,6 +1,5 @@
{
"extends": [
- "airbnb",
"plugin:jest/recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended",
diff --git a/.gitignore b/.gitignore
index 56d0577f7..aa3509cac 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,6 +13,7 @@ src/extension/build.pem
bower_components
sandboxes/manual-tests/NextJS/.next
.vscode
-src/app/components/Map.tsx
package-lock.json
-yarn.lock
\ No newline at end of file
+yarn.lock
+docs/**/*
+docs/*
\ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
index e7c0c9a29..2fc98bd91 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,6 +1,3 @@
-[submodule "tests/manual-tests/recoilTest"]
- path = tests/manual-tests/recoilTest
- url = https://github.com/kevinfey/recoilTest
[submodule "reactime-website"]
path = reactime-website
url = https://github.com/reactimetravel/reactime-website
diff --git a/.npmcheckrc b/.npmcheckrc
new file mode 100644
index 000000000..297d19125
--- /dev/null
+++ b/.npmcheckrc
@@ -0,0 +1,10 @@
+{"depcheck":
+ {
+ "ignoreMatches": [
+ "css-loader",
+ "sass-loader",
+ "style-loader",
+ "typedoc-webpack-plugin"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index ec43b159d..75a7940e3 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,6 +1,6 @@
# Welcome to the Reactime contributing guide!
-Thank you for investing your time in contributing to our project! :sparkles:.
+Thank you for investing your time in contributing to our project! :sparkles:.
In this guide you will get an overview of the contribution workflow from opening an issue, creating a PR, reviewing, and merging the PR.
@@ -13,16 +13,15 @@ To get an overview of the project, read the [README](README.md). Here are some r
- [GitHub flow](https://docs.github.com/en/get-started/quickstart/github-flow)
- [Collaborating with pull requests](https://docs.github.com/en/github/collaborating-with-pull-requests)
-
## Getting started
-To navigate our codebase with confidence, see the [Developer Guidelines](/src/README.md) :confetti_ball:.
+To navigate our codebase with confidence, see the [Developer Guidelines](src/DEVELOPER_README.md) :confetti_ball:.
### Issues
#### Create a new issue
-If you spot a problem with the docs, [search if an issue already exists](https://github.com/open-source-labs/reactime/issues). If a related issue doesn't exist, you can open a new issue using a relevant [issue form](https://github.com/open-source-labs/reactime/issues/new).
+If you spot a problem with the docs, [search if an issue already exists](https://github.com/open-source-labs/reactime/issues). If a related issue doesn't exist, you can open a new issue using a relevant [issue form](https://github.com/open-source-labs/reactime/issues/new).
#### Solve an issue
@@ -32,14 +31,16 @@ Scan through our [existing issues](https://github.com/open-source-labs/reactime/
#### Make changes in the UI
-Click **Make a contribution** at the bottom of any docs page to make small changes such as a typo, sentence fix, or a broken link. This takes you to the `.md` file where you can make your changes and [create a pull request](#pull-request) for a review.
+Click **Make a contribution** at the bottom of any docs page to make small changes such as a typo, sentence fix, or a broken link. This takes you to the `.md` file where you can make your changes and [create a pull request](#pull-request) for a review.
#### Make changes locally
1. [Install Git LFS](https://docs.github.com/en/github/managing-large-files/versioning-large-files/installing-git-large-file-storage).
2. Fork the repository.
+
- Using GitHub Desktop:
+
- [Getting started with GitHub Desktop](https://docs.github.com/en/desktop/installing-and-configuring-github-desktop/getting-started-with-github-desktop) will guide you through setting up Desktop.
- Once Desktop is set up, you can use it to [fork the repo](https://github.com/open-source-labs/reactime.git)!
@@ -55,16 +56,17 @@ Commit the changes once you are happy with them.
### Pull Request
When you're finished with the changes, create a pull request, also known as a PR.
-- Fill the "Ready for review" template so that we can review your PR. This template helps reviewers understand your changes as well as the purpose of your pull request.
+
+- Fill the "Ready for review" template so that we can review your PR. This template helps reviewers understand your changes as well as the purpose of your pull request.
- Don't forget to [link PR to issue](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue) if you are solving one.
- Enable the checkbox to [allow maintainer edits](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/allowing-changes-to-a-pull-request-branch-created-from-a-fork) so the branch can be updated for a merge.
-Once you submit your PR, a Docs team member will review your proposal. We may ask questions or request additional information.
+ Once you submit your PR, a Docs team member will review your proposal. We may ask questions or request additional information.
- We may ask for changes to be made before a PR can be merged, either using [suggested changes](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/incorporating-feedback-in-your-pull-request) or pull request comments. You can apply suggested changes directly through the UI. You can make any other changes in your fork, then commit them to your branch.
- As you update your PR and apply changes, mark each conversation as [resolved](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request#resolving-conversations).
- If you run into any merge issues, checkout this [git tutorial](https://github.com/skills/resolve-merge-conflicts) to help you resolve merge conflicts and other issues.
### Your PR is merged!
-Congratulations :tada::tada: The Reactime team thanks you! :sparkles:.
+Congratulations :tada::tada: The Reactime team thanks you! :sparkles:.
Once your PR is merged, your contributions will be publicly visible on [Reactime](https://github.com/open-source-labs/reactime)!
diff --git a/README.fr.md b/README.fr.md
index c0073e876..147e1d70d 100644
--- a/README.fr.md
+++ b/README.fr.md
@@ -36,7 +36,7 @@
@@ -42,13 +40,14 @@
You can view your application's file structure and click on a snapshot to view
your app's state. State can be visualized in a Component Graph, JSON Tree, or
-Performance Graph. Snapshots can be compared with the previous snapshot, which can
-be viewed in Diff mode.
+Performance Graph. Snapshot history can be visualized in the History tab.
+The Web Metrics tab provides some useful metrics for site performance.
+Snapshots can be compared with the previous snapshot, which can be viewed in Diff mode.
-
+
@@ -85,7 +84,7 @@ Download the recorded snapshots as a JSON file and upload them to access state t
-
+
@@ -95,11 +94,6 @@ If Reactime loses its connection to the tab you're monitoring, simply click the
-
-
-
-
-
### 🔹 Re-render Optimization
One of the most common issues that affects performance in React is unnecessary
@@ -168,16 +162,22 @@ of the structure and interfaces of the codebase.
What's New!
-Reactime 22.0 heralds significant enhancements, addressing core performance issues and fortifying the overall application's stability and reliability. In our pursuit of consistent evolution, we've updated outdated packages and transitioned state management to Redux Toolkit. This strategic shift not only modernizes our tech stack but also ensures our application is positioned for easier maintenance and scalability in the future. Complementing these upgrades, this release also mends various bugs. The debut of features like the reconnection button, a status icon, and the integration of key web metrics – Cumulative Layout Shift (CLS) and Interaction To Next Paint (INP) – amplifies its functionality and offers users a more refined experience.
+Reactime 23.0 brings a new look to the UI, completely updates all outdated packages, and significantly improves stability by solving loading bugs.
+
+UI
-Taking a deeper look
+V23 showcases a sharp new theme to our extension’s UI. We also opted to completely overhaul the styling architecture to make it easier for future developers to change it to their liking.
-Addressing the persistent disconnection/black screen issues that occasionally affected users during regular application use, we made decisive improvements by removing the "keepAlive" function and implementing robust logic to fix the core issue. This enabled us to refine the communication protocol between our application and the Chrome extension API, delivering a more consistent and stable connection. To further enhance the user experience and foster resilience, we introduced a user-friendly reconnection feature. This not only offers users a swift recovery route but also acts as an added layer of protection against any unexpected disconnections in the future.
+Dependencies
-In an effort to improve maintainability, scalability, and longevity, we updated and phased out certain dependencies. To name a few, we moved away from the Immer library and transitioned our state management to use Redux Toolkit, while upgrading the Web Vitals API from version 1.1.2 to 3.5.0, allowing us to harness a broader range of web metrics. As part of this transition, we also converted all of the existing tests to work with the updated state management system, while further expanding testing suites to increase overall testing coverage. Lastly, we achieved a notable increase in TypeScript coverage, strengthening code quality and early detection of potential development issues.
+As of Reactime v22, installing node modules required the use of npm --force due to numerous lingering peer dependency issues. We have tackled this issue head-on in v23 of Reactime. We trimmed bulky packages that already served their purpose. We completely updated those that played a vital role in our extension’s current operation, and we fully resolved their conflicts with other dependencies. By downsizing from 124 to 70 packages, we have made Reactime much lighter and more future-proof.
-For an improved user experience, we set our sights on several impactful enhancements. First on our list is the reconnection feature, designed as a protective measure for those unexpected moments when a user gets disconnected. In such events, an intuitive pop-up dialog will instantly emerge, offering users a seamless way to dive right back into their session, while also offering the option to download recorded snapshots of state as a JSON file. Complementing this, we've integrated a dynamic status indicator that transparently displays a user's current app status, highlighting whether they're online or offline. But that's not all. We've enriched the application with two vital web performance metrics: Cumulative Layout Shift (CLS) and Interaction to Next Paint (INP). These metrics are pivotal, providing developers with insights into layout stability and responsiveness, empowering them to optimize user interactions with precision.
+This effort serves to bolster Reactime in two ways: First, updating packages like react router and webpack gives Reactime’s users access to the performance upgrades that come with modern versions. Additionally, we have future-proofed Reactime by leaving our dependencies at their latest versions. This effort gives future developers of the extension a head start in adding new features and expanding the power of existing ones.
+Loading stability
+
+Reactime has experienced persistent issues with stably loading up. Our first step in tackling these loading inconsistencies was to thoroughly unpack Reactime’s inner workings. Tracking the flow of messages from our content script, our background service workers, the Redux state management and our extension’s backend allowed us to diagnose potential roadblocks as Reactime was spinning up. An exhaustive period of trial and error further deepened our understanding of the problem and ultimately led us towards our new and robustly stable launch experience.
+Beyond this, we have built out a road map of documentation with the goal of setting future Reactime developers on the fast track to further enhance the stability of Reactime’s launch and overall user experience.
If you would like to read more about previous releases, click here!
@@ -213,14 +213,16 @@ locally.
Please refer to Developer Install for a detailed guide:
-Refer [DEVELOPER README](src/README.md) for more info on the project, and
+Refer to the [DEVELOPER README](src/DEVELOPER_README.md) for more info on the project, and
instructions on building from source.
### How to Use
After installing the Chrome extension, just open up your project in the browser.
-Then open up your Chrome DevTools and navigate to the Reactime panel.
+Then right click on your application and choose the 'Reactime' context menu item to open up a Reactime panel.
+
+Alternatively, you can open up your Chrome DevTools and navigate to the Reactime panel.
## Troubleshooting
@@ -242,7 +244,7 @@ clicking the right mouse button “Reload frame”.
### ❓ I found a bug in Reactime
Reactime is an open-source project, and we'd love to hear from you about
-improving the user experience. Please read [DEVELOPER README](src/README.md),
+improving the user experience. Please read [DEVELOPER README](src/DEVELOPER_README.md),
and create a pull request (or issue) to propose and collaborate on changes to Reactime.
### ❓ Node version compatibility
@@ -253,7 +255,7 @@ Node v16.16.0, please use script 'npm run devlegacy' | 'npm run buildlegacy'
## Read More
-- [Reactime: Real-time Debugging, Timeless Results](https://medium.com/@kelvinmirhan/reactime-real-time-debugging-timeless-results-3f163b721d01)
+- [Reactime renovation: Updates Coming in Version 23.0!](https://medium.com/@liam.donaher/reactime-renovation-updates-coming-in-version-23-0-37b2ef2a2771)
## Authors
@@ -353,6 +355,10 @@ Node v16.16.0, please use script 'npm run devlegacy' | 'npm run buildlegacy'
- **Jimmy Phy** - [@jimmally](https://github.com/jimmally)
- **Andrew Byun** - [@AndrewByun](https://github.com/AndrewByun)
- **Kelvin Mirhan** - [@kelvinmirhan](https://github.com/kelvinmirhan)
+- **Jesse Rosengrant** - [@jrosengrant](https://github.com/jrosengrant)
+- **Liam Donaher** - [@leebology](https://github.com/leebology)
+- **David Moore** - [@Solodt55](https://github.com/Solodt55)
+- **John Banks** - [@Jbanks123](https://github.com/Jbanks123)
## License
diff --git a/assets/DataFlowDiagram.PNG b/assets/DataFlowDiagram.PNG
deleted file mode 100644
index 8a50bbcfd..000000000
Binary files a/assets/DataFlowDiagram.PNG and /dev/null differ
diff --git a/assets/DataFlowDiagramV23.png b/assets/DataFlowDiagramV23.png
new file mode 100644
index 000000000..f835c0673
Binary files /dev/null and b/assets/DataFlowDiagramV23.png differ
diff --git a/assets/gifs/GeneralDemoGif.gif b/assets/gifs/GeneralDemoGif.gif
deleted file mode 100644
index 50e7aad63..000000000
Binary files a/assets/gifs/GeneralDemoGif.gif and /dev/null differ
diff --git a/assets/gifs/GeneralDemoGif_V23.gif b/assets/gifs/GeneralDemoGif_V23.gif
new file mode 100644
index 000000000..4dc6f8924
Binary files /dev/null and b/assets/gifs/GeneralDemoGif_V23.gif differ
diff --git a/assets/gifs/ImportExportGif_V23.gif b/assets/gifs/ImportExportGif_V23.gif
new file mode 100644
index 000000000..0b8d9f3da
Binary files /dev/null and b/assets/gifs/ImportExportGif_V23.gif differ
diff --git a/assets/gifs/PerformanceGif_V23.gif b/assets/gifs/PerformanceGif_V23.gif
new file mode 100644
index 000000000..99b9bc1c4
Binary files /dev/null and b/assets/gifs/PerformanceGif_V23.gif differ
diff --git a/assets/gifs/TimeTravelGif.gif b/assets/gifs/TimeTravelGif.gif
deleted file mode 100644
index e14273036..000000000
Binary files a/assets/gifs/TimeTravelGif.gif and /dev/null differ
diff --git a/assets/gifs/TimeTravelGif_V23.gif b/assets/gifs/TimeTravelGif_V23.gif
new file mode 100644
index 000000000..4e14f229b
Binary files /dev/null and b/assets/gifs/TimeTravelGif_V23.gif differ
diff --git a/assets/gifs/importExport_v22.gif b/assets/gifs/importExport_v22.gif
deleted file mode 100644
index 30afb5bd3..000000000
Binary files a/assets/gifs/importExport_v22.gif and /dev/null differ
diff --git a/assets/gifs/main_v21.gif b/assets/gifs/main_v21.gif
deleted file mode 100644
index 6f092c228..000000000
Binary files a/assets/gifs/main_v21.gif and /dev/null differ
diff --git a/demo-app-next/src/components/Board.tsx b/demo-app-next/src/components/Board.tsx
index c94d0779c..950f292df 100644
--- a/demo-app-next/src/components/Board.tsx
+++ b/demo-app-next/src/components/Board.tsx
@@ -1,6 +1,6 @@
-import React, { Component } from "react";
-import Row from "./Row";
-import { BoardContent, Scoreboard, Player } from "../types/types";
+import React, { Component } from 'react';
+import Row from './Row';
+import { BoardContent, Scoreboard, Player } from '../types/types';
type BoardState = {
board: BoardContent;
@@ -15,9 +15,9 @@ class Board extends Component<{}, BoardState> {
super(props);
this.state = {
board: this.newBoard(),
- currentPlayer: "X",
+ currentPlayer: 'X',
gameOver: false,
- message: "",
+ message: '',
scoreboard: { X: 0, O: 0 },
};
@@ -25,7 +25,7 @@ class Board extends Component<{}, BoardState> {
this.handleBoxClick = this.handleBoxClick.bind(this);
}
- componentDidUpdate():void {
+ componentDidUpdate(): void {
this.checkForWinner();
}
@@ -36,9 +36,9 @@ class Board extends Component<{}, BoardState> {
*/
newBoard(): BoardContent {
return [
- ["-", "-", "-"],
- ["-", "-", "-"],
- ["-", "-", "-"],
+ ['-', '-', '-'],
+ ['-', '-', '-'],
+ ['-', '-', '-'],
];
}
@@ -51,7 +51,7 @@ class Board extends Component<{}, BoardState> {
this.setState({
gameOver: false,
board: this.newBoard(),
- message: "",
+ message: '',
});
}
@@ -65,7 +65,7 @@ class Board extends Component<{}, BoardState> {
const spacesLeft = (): boolean => {
for (let i of board) {
- if (i.includes("-")) return true;
+ if (i.includes('-')) return true;
}
return false;
};
@@ -73,33 +73,17 @@ class Board extends Component<{}, BoardState> {
if (!gameOver) {
// win conditions: matching rows, columns, or diagonals, that are not empty('-')
if (
- (board[0][0] === board[0][1] &&
- board[0][1] === board[0][2] &&
- board[0][2] !== "-") ||
- (board[1][0] === board[1][1] &&
- board[1][1] === board[1][2] &&
- board[1][2] !== "-") ||
- (board[2][0] === board[2][1] &&
- board[2][1] === board[2][2] &&
- board[2][2] !== "-") ||
- (board[0][0] === board[1][0] &&
- board[1][0] === board[2][0] &&
- board[2][0] !== "-") ||
- (board[0][1] === board[1][1] &&
- board[1][1] === board[2][1] &&
- board[2][1] !== "-") ||
- (board[0][2] === board[1][2] &&
- board[1][2] === board[2][2] &&
- board[2][2] !== "-") ||
- (board[0][0] === board[1][1] &&
- board[1][1] === board[2][2] &&
- board[2][2] !== "-") ||
- (board[2][0] === board[1][1] &&
- board[1][1] === board[0][2] &&
- board[0][2] !== "-")
+ (board[0][0] === board[0][1] && board[0][1] === board[0][2] && board[0][2] !== '-') ||
+ (board[1][0] === board[1][1] && board[1][1] === board[1][2] && board[1][2] !== '-') ||
+ (board[2][0] === board[2][1] && board[2][1] === board[2][2] && board[2][2] !== '-') ||
+ (board[0][0] === board[1][0] && board[1][0] === board[2][0] && board[2][0] !== '-') ||
+ (board[0][1] === board[1][1] && board[1][1] === board[2][1] && board[2][1] !== '-') ||
+ (board[0][2] === board[1][2] && board[1][2] === board[2][2] && board[2][2] !== '-') ||
+ (board[0][0] === board[1][1] && board[1][1] === board[2][2] && board[2][2] !== '-') ||
+ (board[2][0] === board[1][1] && board[1][1] === board[0][2] && board[0][2] !== '-')
) {
// winner is the person who's turn was previous
- const winner: Player = currentPlayer === "X" ? "O" : "X";
+ const winner: Player = currentPlayer === 'X' ? 'O' : 'X';
this.setState({
gameOver: true,
@@ -110,7 +94,7 @@ class Board extends Component<{}, BoardState> {
} else if (!spacesLeft()) {
this.setState({
gameOver: true,
- message: "Draw!",
+ message: 'Draw!',
});
}
}
@@ -123,7 +107,7 @@ class Board extends Component<{}, BoardState> {
[...this.state.board[2]],
];
boardCopy[row][column] = this.state.currentPlayer;
- const newPlayer: Player = this.state.currentPlayer === "X" ? "O" : "X";
+ const newPlayer: Player = this.state.currentPlayer === 'X' ? 'O' : 'X';
this.setState({ board: boardCopy, currentPlayer: newPlayer });
}
@@ -131,22 +115,17 @@ class Board extends Component<{}, BoardState> {
const rows: Array = [];
for (let i = 0; i < 3; i++) {
rows.push(
-
+ ,
);
}
// const { X, O }: Scoreboard = this.state.scoreboard;
return (
-
;
};
export default Row;
diff --git a/demo-app-next/src/pages/_app.tsx b/demo-app-next/src/pages/_app.tsx
index b367bd103..279f38d6b 100644
--- a/demo-app-next/src/pages/_app.tsx
+++ b/demo-app-next/src/pages/_app.tsx
@@ -1,5 +1,5 @@
-import "../../styles/style.css";
-import React from "react"
+import '../../styles/style.css';
+import React from 'react';
export default function MyApp({ Component, pageProps }): JSX.Element {
return ;
diff --git a/demo-app-next/src/pages/buttons/index.tsx b/demo-app-next/src/pages/buttons/index.tsx
index 28af6481a..4e0b24237 100644
--- a/demo-app-next/src/pages/buttons/index.tsx
+++ b/demo-app-next/src/pages/buttons/index.tsx
@@ -1,5 +1,5 @@
-import Buttons from "../../components/Buttons";
-import Navbar from "../../components/navbar";
+import Buttons from '../../components/Buttons';
+import Navbar from '../../components/navbar';
export default function ButtonsPage(): JSX.Element {
return (
diff --git a/demo-app-next/src/pages/index.tsx b/demo-app-next/src/pages/index.tsx
index 11a5011a4..5bcd002d3 100644
--- a/demo-app-next/src/pages/index.tsx
+++ b/demo-app-next/src/pages/index.tsx
@@ -1,29 +1,27 @@
-import Navbar from "../components/navbar";
-import React from "react"
+import Navbar from '../components/navbar';
+import React from 'react';
-export default function Home():JSX.Element {
+export default function Home(): JSX.Element {
return (
-
+
Lorem Ipsum
- "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
- eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
- minim veniam, quis nostrud exercitation ullamco laboris nisi ut
- aliquip ex ea commodo consequat. Duis aute irure dolor in
- reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
- pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
- culpa qui officia deserunt mollit anim id est laborum."
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
+ ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation
+ ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
+ reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur
+ sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id
+ est laborum."
- "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
- eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
- minim veniam, quis nostrud exercitation ullamco laboris nisi ut
- aliquip ex ea commodo consequat. Duis aute irure dolor in
- reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
- pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
- culpa qui officia deserunt mollit anim id est laborum."
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
+ ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation
+ ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
+ reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur
+ sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id
+ est laborum."
diff --git a/demo-app-next/src/pages/tictactoe/index.tsx b/demo-app-next/src/pages/tictactoe/index.tsx
index f43fb0689..d2376d215 100644
--- a/demo-app-next/src/pages/tictactoe/index.tsx
+++ b/demo-app-next/src/pages/tictactoe/index.tsx
@@ -1,7 +1,7 @@
import Board from '../../components/Board';
import Navbar from '../../components/navbar';
-export default function BoardPage():JSX.Element {
+export default function BoardPage(): JSX.Element {
return (
diff --git a/demo-app-remix/app/components/Box.tsx b/demo-app-remix/app/components/Box.tsx
index 2da62712e..038a557f3 100644
--- a/demo-app-remix/app/components/Box.tsx
+++ b/demo-app-remix/app/components/Box.tsx
@@ -1,4 +1,4 @@
-import type { BoardText } from "../types/types";
+import type { BoardText } from '../types/types';
type BoxProps = {
value: BoardText;
@@ -9,10 +9,7 @@ type BoxProps = {
const Box = (props: BoxProps) => {
return (
- props.handleBoxClick(props.row, props.column)}
- >
+ props.handleBoxClick(props.row, props.column)}>
{props.value}
);
diff --git a/demo-app-remix/app/components/Increment.tsx b/demo-app-remix/app/components/Increment.tsx
index 85b572d59..6e6486908 100644
--- a/demo-app-remix/app/components/Increment.tsx
+++ b/demo-app-remix/app/components/Increment.tsx
@@ -10,4 +10,4 @@ function Increment() {
);
}
-export default Increment;
\ No newline at end of file
+export default Increment;
diff --git a/demo-app-remix/app/components/Row.tsx b/demo-app-remix/app/components/Row.tsx
index 7dc1171ab..011b7a8ae 100644
--- a/demo-app-remix/app/components/Row.tsx
+++ b/demo-app-remix/app/components/Row.tsx
@@ -1,5 +1,5 @@
-import Box from "./Box";
-import type { BoardText } from "../types/types";
+import Box from './Box';
+import type { BoardText } from '../types/types';
type RowProps = {
handleBoxClick: (row: number, column: number) => void;
@@ -17,11 +17,11 @@ const Row = (props: RowProps) => {
column={i}
handleBoxClick={props.handleBoxClick}
value={props.values[i]}
- >
+ >,
);
}
- return
{boxes}
;
+ return
{boxes}
;
};
export default Row;
diff --git a/demo-app-remix/app/components/navbar.js b/demo-app-remix/app/components/navbar.js
index 018ad3e7f..885e6f473 100644
--- a/demo-app-remix/app/components/navbar.js
+++ b/demo-app-remix/app/components/navbar.js
@@ -1,15 +1,15 @@
-import { Link } from "@remix-run/react";
+import { Link } from '@remix-run/react';
export default function Navbar() {
return (
-
-
+
+
About
-
+
Tic-Tac-Toe
-
+
Counter
diff --git a/demo-app-remix/app/root.tsx b/demo-app-remix/app/root.tsx
index 2565a4581..26ac3df47 100644
--- a/demo-app-remix/app/root.tsx
+++ b/demo-app-remix/app/root.tsx
@@ -1,24 +1,17 @@
-import type { MetaFunction, LinksFunction } from "@remix-run/node";
-import {
- Links,
- LiveReload,
- Meta,
- Outlet,
- Scripts,
- ScrollRestoration,
-} from "@remix-run/react";
-import styles from "./styles/style.css";
+import type { MetaFunction, LinksFunction } from '@remix-run/node';
+import { Links, LiveReload, Meta, Outlet, Scripts, ScrollRestoration } from '@remix-run/react';
+import styles from './styles/style.css';
export const meta: MetaFunction = () => ({
- charset: "utf-8",
- title: "New Remix App",
- viewport: "width=device-width,initial-scale=1",
+ charset: 'utf-8',
+ title: 'New Remix App',
+ viewport: 'width=device-width,initial-scale=1',
});
export const links: LinksFunction = () => {
return [
{
- rel: "stylesheet",
+ rel: 'stylesheet',
href: styles,
},
];
@@ -26,7 +19,7 @@ export const links: LinksFunction = () => {
export default function App() {
return (
-
+
diff --git a/demo-app-remix/app/routes/buttons/index.tsx b/demo-app-remix/app/routes/buttons/index.tsx
index c6458afcc..1842d8240 100644
--- a/demo-app-remix/app/routes/buttons/index.tsx
+++ b/demo-app-remix/app/routes/buttons/index.tsx
@@ -1,5 +1,5 @@
-import Button from "../../components/Buttons";
-import Navbar from "../../components/navbar";
+import Button from '../../components/Buttons';
+import Navbar from '../../components/navbar';
export default function ButtonsPage() {
return (
diff --git a/demo-app-remix/app/routes/index.tsx b/demo-app-remix/app/routes/index.tsx
index 1e04f2d8a..1e26e26d0 100644
--- a/demo-app-remix/app/routes/index.tsx
+++ b/demo-app-remix/app/routes/index.tsx
@@ -1,28 +1,26 @@
-import Navbar from "../components/navbar.js";
+import Navbar from '../components/navbar.js';
export default function Home() {
return (
-
+
Lorem Ipsum
- "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
- eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
- minim veniam, quis nostrud exercitation ullamco laboris nisi ut
- aliquip ex ea commodo consequat. Duis aute irure dolor in
- reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
- pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
- culpa qui officia deserunt mollit anim id est laborum."
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
+ ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation
+ ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
+ reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur
+ sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id
+ est laborum."
- "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
- eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
- minim veniam, quis nostrud exercitation ullamco laboris nisi ut
- aliquip ex ea commodo consequat. Duis aute irure dolor in
- reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
- pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
- culpa qui officia deserunt mollit anim id est laborum."
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
+ ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation
+ ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
+ reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur
+ sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id
+ est laborum."
diff --git a/demo-app-remix/app/routes/tictactoe/index.tsx b/demo-app-remix/app/routes/tictactoe/index.tsx
index 903fadf76..8cd5fae85 100644
--- a/demo-app-remix/app/routes/tictactoe/index.tsx
+++ b/demo-app-remix/app/routes/tictactoe/index.tsx
@@ -1,7 +1,7 @@
-import Board from "../../components/Board";
-import Box from "../../components/Box";
-import Row from "../../components/Row";
-import Navbar from "../../components/navbar";
+import Board from '../../components/Board';
+import Box from '../../components/Box';
+import Row from '../../components/Row';
+import Navbar from '../../components/navbar';
export default function Tictactoe() {
return (
diff --git a/demo-app-remix/app/types/types.ts b/demo-app-remix/app/types/types.ts
index 8e6904d65..cc8252e42 100644
--- a/demo-app-remix/app/types/types.ts
+++ b/demo-app-remix/app/types/types.ts
@@ -3,8 +3,8 @@ export type Scoreboard = {
O: number;
};
-export type Player = "X" | "O";
+export type Player = 'X' | 'O';
-export type BoardText = "X" | "O" | "-";
+export type BoardText = 'X' | 'O' | '-';
export type BoardContent = Array>;
diff --git a/demo-app-remix/package.json b/demo-app-remix/package.json
index 785aa40a0..5add33863 100644
--- a/demo-app-remix/package.json
+++ b/demo-app-remix/package.json
@@ -4,9 +4,9 @@
"scripts": {
"build": "remix build",
"dev": "npm-run-all build --parallel \"dev:*\"",
- "dev:node": "cross-env NODE_ENV=development nodemon --require dotenv/config ./server.js --watch ./server.js",
+ "dev:node": "cross-env NODE_ENV=development nodemon --require dotenv/config ./server.ts --watch ./server.ts",
"dev:remix": "remix watch",
- "start": "cross-env NODE_ENV=production node ./server.js",
+ "start": "cross-env NODE_ENV=production node ./server.ts",
"typecheck": "tsc"
},
"dependencies": {
@@ -19,7 +19,8 @@
"isbot": "^3.6.5",
"morgan": "^1.10.0",
"react": "^18.2.0",
- "react-dom": "^18.2.0"
+ "react-dom": "^18.2.0",
+ "ts-node": "^10.9.2"
},
"devDependencies": {
"@remix-run/dev": "^1.14.1",
diff --git a/demo-app-remix/server.ts b/demo-app-remix/server.ts
index 1d7ef3982..1e24b658d 100644
--- a/demo-app-remix/server.ts
+++ b/demo-app-remix/server.ts
@@ -1,33 +1,31 @@
-const path = require("path");
-const express = require("express");
-const compression = require("compression");
-const morgan = require("morgan");
-const { createRequestHandler } = require("@remix-run/express");
+export {}; //JR: added to fix this error message: 'server.ts' cannot be compiled under '--isolatedModules' because it is considered a global script file. Add an import, export, or an empty 'export {}' statement to make it a module.
+const path = require('path');
+const express = require('express');
+const compression = require('compression');
+const morgan = require('morgan');
+const { createRequestHandler } = require('@remix-run/express');
-const BUILD_DIR = path.join(process.cwd(), "build");
+const BUILD_DIR = path.join(process.cwd(), 'build');
const app = express();
app.use(compression());
// http://expressjs.com/en/advanced/best-practice-security.html#at-a-minimum-disable-x-powered-by-header
-app.disable("x-powered-by");
+app.disable('x-powered-by');
// Remix fingerprints its assets so we can cache forever.
-app.use(
- "/build",
- express.static("public/build", { immutable: true, maxAge: "1y" })
-);
+app.use('/build', express.static('public/build', { immutable: true, maxAge: '1y' }));
// Everything else (like favicon.ico) is cached for an hour. You may want to be
// more aggressive with this caching.
-app.use(express.static("public", { maxAge: "1h" }));
+app.use(express.static('public', { maxAge: '1h' }));
-app.use(morgan("tiny"));
+app.use(morgan('tiny'));
app.all(
- "*",
- process.env.NODE_ENV === "development"
+ '*',
+ process.env.NODE_ENV === 'development'
? (req: any, res: any, next: any) => {
purgeRequireCache();
@@ -39,7 +37,7 @@ app.all(
: createRequestHandler({
build: require(BUILD_DIR),
mode: process.env.NODE_ENV,
- })
+ }),
);
const port: number | string = process.env.PORT || 3003;
diff --git a/demo-app/package.json b/demo-app/package.json
index 7bb3a9b23..17ed638c0 100644
--- a/demo-app/package.json
+++ b/demo-app/package.json
@@ -19,6 +19,7 @@
"copy-webpack-plugin": "^10.2.0",
"css-loader": "^6.5.1",
"html-webpack-plugin": "^5.5.0",
+ "node": "^16.0.0",
"nodemon": "^2.0.15",
"ts-loader": "^9.2.6",
"typescript": "^4.5.4",
diff --git a/demo-app/src/client/Components/Board.tsx b/demo-app/src/client/Components/Board.tsx
index 4e45c4c5d..416bef2c0 100644
--- a/demo-app/src/client/Components/Board.tsx
+++ b/demo-app/src/client/Components/Board.tsx
@@ -1,7 +1,7 @@
import React, { Component } from 'react';
import Row from './Row';
import { BoardContent, Scoreboard, Player } from './../../types';
-//Took away BoardText from import
+//Took away BoardText from import
//thinking about changing this to an interface
type BoardState = {
diff --git a/demo-app/src/client/Components/Box.tsx b/demo-app/src/client/Components/Box.tsx
index 87a2a88d1..d9c45512e 100644
--- a/demo-app/src/client/Components/Box.tsx
+++ b/demo-app/src/client/Components/Box.tsx
@@ -1,4 +1,4 @@
-import React from 'react'
+import React from 'react';
import { BoardText } from '../../types';
type BoxProps = {
@@ -8,12 +8,12 @@ type BoxProps = {
handleBoxClick: (row: number, column: number) => void;
};
-const Box = (props: BoxProps) : JSX.Element => {
+const Box = (props: BoxProps): JSX.Element => {
return (
<>
- props.handleBoxClick(props.row, props.column)}>
- {props.value}
-
+ props.handleBoxClick(props.row, props.column)}>
+ {props.value}
+
>
);
};
diff --git a/demo-app/src/client/Components/ButtonsWithMoreHooks.jsx b/demo-app/src/client/Components/ButtonsWithMoreHooks.jsx
index 1d7d94c79..5d9398b51 100644
--- a/demo-app/src/client/Components/ButtonsWithMoreHooks.jsx
+++ b/demo-app/src/client/Components/ButtonsWithMoreHooks.jsx
@@ -1,40 +1,40 @@
-import React, {useState, createContext} from 'react';
+import React, { useState, createContext } from 'react';
import IncrementWithMoreHooks from './IncrementWithMoreHooks';
/**
- * This component as well as IncrementWithMoreHooks were made to show where data for different
+ * This component as well as IncrementWithMoreHooks were made to show where data for different
* hooks show up in the react fiber tree.
*/
-/**
+/**
* This file is a JSX file, not a TSX file, on purpose. The code won't be converted to common JS
- * before being bundled by webpack. There were some errors that weren't showing up for the other
+ * before being bundled by webpack. There were some errors that weren't showing up for the other
* Increment.tsx file based on how webpack uglifies ES6 files. Maintaining this as a JSX file
* will help check for these types of issues.
*/
/**
- * How Reactime extracts useState data and what would have to be done
+ * How Reactime extracts useState data and what would have to be done
* to extract useContext and useReducer data:
- *
- * When extracting a functional component's useState data from the fiber tree in the backend of
- * Reactime, said data is stored on said component's fiber tree node at its memoizedState property,
- * which is a linked list with each node holding data for each useState invocation (some but
+ *
+ * When extracting a functional component's useState data from the fiber tree in the backend of
+ * Reactime, said data is stored on said component's fiber tree node at its memoizedState property,
+ * which is a linked list with each node holding data for each useState invocation (some but
* not all other hooks also store nodes with data here). Each useState memoizedState node includes
* the variable (e.g. user) and its corresponding dispatch function (e.g. setUser). This dispatch
* function is required to use Reactime's timeJump feature.
- *
+ *
* useContext data is stored on the property "dependencies", and only the data passed into the
* value attritibute of the 'context'.Provider element will be there. For tripContext.Provider,
- * we pass down "trip" without "setTrip", so we won't have access to the 'trip' dispatch function
- * in the "IncrementWithMoreHooks" component, meaning Reactime's timeJump won't work without
+ * we pass down "trip" without "setTrip", so we won't have access to the 'trip' dispatch function
+ * in the "IncrementWithMoreHooks" component, meaning Reactime's timeJump won't work without
* finding the 'trip' dispatch function by coming into this component where useState was invoked and
- * storing it in the appropriate place. This is easy enough for useState variables, but useContext
- * is commonly used with useReducer which is an entirely different beast.
- *
- * I advise solving the puzzle of making useReducer work with the timeJump functionality before
- * integrating other hooks. Look at time jumping in the Redux dev tools chrome extension for
- * inspiration, because you essentially need to recreate that within Reactime.
+ * storing it in the appropriate place. This is easy enough for useState variables, but useContext
+ * is commonly used with useReducer which is an entirely different beast.
+ *
+ * I advise solving the puzzle of making useReducer work with the timeJump functionality before
+ * integrating other hooks. Look at time jumping in the Redux dev tools chrome extension for
+ * inspiration, because you essentially need to recreate that within Reactime.
*/
// userInCreateContext is different from 'user' to see where this variable name showed up in the AST
@@ -44,18 +44,18 @@ export const tripContext = createContext({ trip: 'null', setTrip: undefined });
const ButtonsWithMoreHooks = () => {
const [user, setUser] = useState('null');
const userValue = { user, setUser };
- const [trip, setTrip ] = useState('Hawaii');
+ const [trip, setTrip] = useState('Hawaii');
const tripValue = { trip };
return (
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
diff --git a/demo-app/src/client/Components/IncrementWithMoreHooks.jsx b/demo-app/src/client/Components/IncrementWithMoreHooks.jsx
index 8c2f56752..4cba379b3 100644
--- a/demo-app/src/client/Components/IncrementWithMoreHooks.jsx
+++ b/demo-app/src/client/Components/IncrementWithMoreHooks.jsx
@@ -1,34 +1,41 @@
-import React, { useState, useEffect, useContext, useReducer, useRef, useMemo, useCallback } from 'react';
+import React, {
+ useState,
+ useEffect,
+ useContext,
+ useReducer,
+ useRef,
+ useMemo,
+ useCallback,
+} from 'react';
import { userContext, tripContext } from './ButtonsWithMoreHooks';
import { useImmer } from 'use-immer';
-/**
- * This component as well as ButtonsWithMoreHooks were made to show where data for different
- * hooks show up in the react fiber tree. There are duplicates of most hooks so you can see
+/**
+ * This component as well as ButtonsWithMoreHooks were made to show where data for different
+ * hooks show up in the react fiber tree. There are duplicates of most hooks so you can see
* how the react fiber tree iterates over hook data.
-*/
+ */
-/**
+/**
* This file is a JSX file, not a TSX file, on purpose. The code won't be converted to common JS
- * before being bundled by webpack. There were some errors that weren't showing up for the other
+ * before being bundled by webpack. There were some errors that weren't showing up for the other
* Increment.tsx file based on how webpack uglifies ES6 files. Maintaining this as a JSX file
* will help check for these types of issues.
*/
-
+
/**
* ES5 function definitions are intentionally used for most functions as ES6 function definitions were one
* of the reasons Reactime 18 was breaking. Handleclick within the component definitions is ES6 to cover
- * this case, but having only 1 ES6 function definition in the file makes it easy to switch for testing
+ * this case, but having only 1 ES6 function definition in the file makes it easy to switch for testing
* purposes. Functional component definitions made with ES6
- */
-
+ */
//---------useReducer reducer and initialState functions------------------------------------------------------------------
function reducer1(state, action) {
if (action.type === 'INCREMENT_UR1COUNT') {
return {
- UR1Count: state.UR1Count + 1
+ UR1Count: state.UR1Count + 1,
};
}
// This throws an error if you send a dispatch action to this reducer without having
@@ -40,7 +47,7 @@ function reducer1(state, action) {
function reducer2(state, action) {
if (action.type === 'ADD_TO_ARRAY') {
return {
- UR2Array: state.UR2Array.concat(action.payload)
+ UR2Array: state.UR2Array.concat(action.payload),
};
}
// This throws an error if you send a dispatch action to this reducer without having
@@ -50,10 +57,9 @@ function reducer2(state, action) {
}
function createInitialState(num) {
- return { UR1Count: num }
+ return { UR1Count: num };
}
-
//---------Custom Hook Definition-----------------------------------------------------------------------------------------
function useCustomHook() {
@@ -61,23 +67,19 @@ function useCustomHook() {
useEffect(() => {
setCustomCount((customCount) => customCount + 1);
- },[])
+ }, []);
- return {customCount}
+ return { customCount };
}
-
//-------IncrementWithMoreHooks Component Definition--------------------------------------------------------------------------
const IncrementWithMoreHooks = () => {
-
-
//--------useState Invocations----------------------------------------------------------------------------------------------
-
+
// useState stores stateful data in the component it's defined in
const [count, setCount] = useState(0);
- const [buttonState, setButtonState] = useState(false)
-
+ const [buttonState, setButtonState] = useState(false);
//--------useContext Invocations--------------------------------------------------------------------------------------------
@@ -88,16 +90,14 @@ const IncrementWithMoreHooks = () => {
const { user, setUser } = useContext(userContext);
const { trip } = useContext(tripContext);
-
//--------useReduce Invocations----------------------------------------------------------------------------------------------
- // useReducer stores stateful data in the component it's defined in.
+ // useReducer stores stateful data in the component it's defined in.
// It also takes custom 'reducer' functions which dictate how the stateful
// data is updated when particular arguments are provided to invoked 'dispatch' functions
const [UR1State, dispatch1] = useReducer(reducer1, 0, createInitialState);
const [UR2State, dispatch2] = useReducer(reducer2, { UR2Array: [] });
-
//--------useRef Invocations-------------------------------------------------------------------------------------------------
// useRef stores stateful data that’s not needed for rendering.
@@ -105,7 +105,6 @@ const IncrementWithMoreHooks = () => {
const ref1 = useRef(null);
const ref2 = useRef(1);
-
//--------useMemo Invocations------------------------------------------------------------------------------------------------
// useMemo takes a callback and dependency arrays holding values used in the callback.
@@ -114,12 +113,11 @@ const IncrementWithMoreHooks = () => {
// the callback again. This'll save resources if calling the callback is expensive.
const memoValue1 = useMemo(() => count * ref2.current * 2, [count, ref2.current]);
const memoValue2 = useMemo(() => count * 2, [count]);
-
//--------useCallback Invocations-------------------------------------------------------------------------------------------
// useCallback is similar to useMemo, however it caches a function definition that changes
- // based on the dependencies. This'll save resources when defining said function is expensive.
+ // based on the dependencies. This'll save resources when defining said function is expensive.
const callback1 = useCallback(() => {
return count * memoValue1;
}, [count, memoValue1]);
@@ -127,7 +125,6 @@ const IncrementWithMoreHooks = () => {
return count * memoValue2;
}, [count, memoValue2]);
-
//--------useEffect Invocations---------------------------------------------------------------------------------------------
// useEffect is a lifecycle hook that invokes its first argument 'setup' callback based on whether or not
@@ -141,38 +138,34 @@ const IncrementWithMoreHooks = () => {
useEffect(() => {
setUser('Mark');
return () => {
- console.log('I get executed when IncrementWithMoreHooks unmounts')
- }
+ console.log('I get executed when IncrementWithMoreHooks unmounts');
+ };
}, []);
-
useEffect(() => {
setCount((count) => count + 1);
}, [buttonState]);
-
//--------useImmer Invocation------------------------------------------------------------------------------------------------
-
+
// use-immer is an npm library used for writing simple immutable changes with mutable syntax
const [person, updatePerson] = useImmer({
name: 'Jeff',
- age: 34
+ age: 34,
});
// function to increment useImmer age value
function incrementPersonAge() {
- updatePerson(draft => {
+ updatePerson((draft) => {
draft.age++;
});
}
-
//--------Custom Hook Invocation---------------------------------------------------------------------------------------------
// Custom hook implementation
const { customCount } = useCustomHook();
-
-
+
//--------Other function definitions---------------------------------------------------------------------------------------------
//Click function to alter state of buttonState
@@ -182,8 +175,7 @@ const IncrementWithMoreHooks = () => {
} else {
setButtonState(true);
}
- }
-
+ };
// Converts values like functions, objects, and 'false 'booleans that wouldn't otherwise print in a JSX element to strings if possible
function printString(val) {
@@ -196,82 +188,71 @@ const IncrementWithMoreHooks = () => {
try {
result = JSON.stringify(val);
} catch {
- result = 'Failed to convert into JSON string'
+ result = 'Failed to convert into JSON string';
}
return result;
}
-
//--------Return Statement------------------------------------------------------------------------------------------------------
return (
-
Increment With More Hooks
-
useState data:
-
count: {printString(count)}
+
+ count: {printString(count)}
count will increment via useEffect on buttonState state change
-
- Click to increment person's age
-
+ Click to increment person's age
-
useCustomHook data:
customCount: {printString(customCount)}
- The custom hook utilizes useEffect to increments a useState
- var customCount only on the first render. Remove the empty
- dependency array from the second parameter of the useEffect
+ The custom hook utilizes useEffect to increments a useState var customCount only on the
+ first render. Remove the empty dependency array from the second parameter of the useEffect
call to see a show!
\ No newline at end of file
diff --git a/docs/classes/app_components_ErrorHandling_ErrorHandler.default.html b/docs/classes/app_components_ErrorHandling_ErrorHandler.default.html
new file mode 100644
index 000000000..ca214b255
--- /dev/null
+++ b/docs/classes/app_components_ErrorHandling_ErrorHandler.default.html
@@ -0,0 +1,4 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/classes/backend_models_routes.Route.html b/docs/classes/backend_models_routes.Route.html
new file mode 100644
index 000000000..fc7afa567
--- /dev/null
+++ b/docs/classes/backend_models_routes.Route.html
@@ -0,0 +1,4 @@
+Route | reactime
\ No newline at end of file
diff --git a/docs/classes/backend_models_routes.Routes.html b/docs/classes/backend_models_routes.Routes.html
new file mode 100644
index 000000000..0c4f9b41e
--- /dev/null
+++ b/docs/classes/backend_models_routes.Routes.html
@@ -0,0 +1,22 @@
+Routes | reactime
\ No newline at end of file
diff --git a/docs/classes/backend_models_tree.default.html b/docs/classes/backend_models_tree.default.html
new file mode 100644
index 000000000..a485ac74f
--- /dev/null
+++ b/docs/classes/backend_models_tree.default.html
@@ -0,0 +1,31 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_App.default.html b/docs/functions/app_App.default.html
new file mode 100644
index 000000000..a54350ab7
--- /dev/null
+++ b/docs/functions/app_App.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_components_Actions_Action.default.html b/docs/functions/app_components_Actions_Action.default.html
new file mode 100644
index 000000000..9bd080563
--- /dev/null
+++ b/docs/functions/app_components_Actions_Action.default.html
@@ -0,0 +1,4 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_components_Actions_RouteDescription.default.html b/docs/functions/app_components_Actions_RouteDescription.default.html
new file mode 100644
index 000000000..ccf84f763
--- /dev/null
+++ b/docs/functions/app_components_Actions_RouteDescription.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_components_Actions_SwitchApp.default.html b/docs/functions/app_components_Actions_SwitchApp.default.html
new file mode 100644
index 000000000..72fd14cae
--- /dev/null
+++ b/docs/functions/app_components_Actions_SwitchApp.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_components_Buttons_StatusDot.default.html b/docs/functions/app_components_Buttons_StatusDot.default.html
new file mode 100644
index 000000000..638e10e0c
--- /dev/null
+++ b/docs/functions/app_components_Buttons_StatusDot.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_components_DiffRoute_Diff.default.html b/docs/functions/app_components_DiffRoute_Diff.default.html
new file mode 100644
index 000000000..7194f24b6
--- /dev/null
+++ b/docs/functions/app_components_DiffRoute_Diff.default.html
@@ -0,0 +1,5 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_components_DiffRoute_DiffRoute.default.html b/docs/functions/app_components_DiffRoute_DiffRoute.default.html
new file mode 100644
index 000000000..841a1d066
--- /dev/null
+++ b/docs/functions/app_components_DiffRoute_DiffRoute.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_components_ErrorHandling_ErrorMsg.default.html b/docs/functions/app_components_ErrorHandling_ErrorMsg.default.html
new file mode 100644
index 000000000..1ead806b9
--- /dev/null
+++ b/docs/functions/app_components_ErrorHandling_ErrorMsg.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_components_ErrorHandling_Loader.default.html b/docs/functions/app_components_ErrorHandling_Loader.default.html
new file mode 100644
index 000000000..5b10aa81c
--- /dev/null
+++ b/docs/functions/app_components_ErrorHandling_Loader.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_components_StateRoute_ComponentMap_ComponentMap.default.html b/docs/functions/app_components_StateRoute_ComponentMap_ComponentMap.default.html
new file mode 100644
index 000000000..f6e59f000
--- /dev/null
+++ b/docs/functions/app_components_StateRoute_ComponentMap_ComponentMap.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_components_StateRoute_ComponentMap_LinkControls.default.html b/docs/functions/app_components_StateRoute_ComponentMap_LinkControls.default.html
new file mode 100644
index 000000000..4b6897f4b
--- /dev/null
+++ b/docs/functions/app_components_StateRoute_ComponentMap_LinkControls.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_components_StateRoute_ComponentMap_ToolTipDataDisplay.default.html b/docs/functions/app_components_StateRoute_ComponentMap_ToolTipDataDisplay.default.html
new file mode 100644
index 000000000..ed86f6570
--- /dev/null
+++ b/docs/functions/app_components_StateRoute_ComponentMap_ToolTipDataDisplay.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_components_StateRoute_ComponentMap_getLinkComponent.default.html b/docs/functions/app_components_StateRoute_ComponentMap_getLinkComponent.default.html
new file mode 100644
index 000000000..9f8073f96
--- /dev/null
+++ b/docs/functions/app_components_StateRoute_ComponentMap_getLinkComponent.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_components_StateRoute_History.default.html b/docs/functions/app_components_StateRoute_History.default.html
new file mode 100644
index 000000000..c3d3a661f
--- /dev/null
+++ b/docs/functions/app_components_StateRoute_History.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_components_StateRoute_PerformanceVisx_BarGraph.default.html b/docs/functions/app_components_StateRoute_PerformanceVisx_BarGraph.default.html
new file mode 100644
index 000000000..da57b6a61
--- /dev/null
+++ b/docs/functions/app_components_StateRoute_PerformanceVisx_BarGraph.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_components_StateRoute_PerformanceVisx_BarGraphComparison.default.html b/docs/functions/app_components_StateRoute_PerformanceVisx_BarGraphComparison.default.html
new file mode 100644
index 000000000..891ab75cf
--- /dev/null
+++ b/docs/functions/app_components_StateRoute_PerformanceVisx_BarGraphComparison.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_components_StateRoute_PerformanceVisx_BarGraphComparisonActions.default.html b/docs/functions/app_components_StateRoute_PerformanceVisx_BarGraphComparisonActions.default.html
new file mode 100644
index 000000000..87b6f24bc
--- /dev/null
+++ b/docs/functions/app_components_StateRoute_PerformanceVisx_BarGraphComparisonActions.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_components_StateRoute_PerformanceVisx_PerformanceVisx.default.html b/docs/functions/app_components_StateRoute_PerformanceVisx_PerformanceVisx.default.html
new file mode 100644
index 000000000..4af33857d
--- /dev/null
+++ b/docs/functions/app_components_StateRoute_PerformanceVisx_PerformanceVisx.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_components_StateRoute_PerformanceVisx_RenderingFrequency.default.html b/docs/functions/app_components_StateRoute_PerformanceVisx_RenderingFrequency.default.html
new file mode 100644
index 000000000..603c95ba9
--- /dev/null
+++ b/docs/functions/app_components_StateRoute_PerformanceVisx_RenderingFrequency.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_components_StateRoute_StateRoute.default.html b/docs/functions/app_components_StateRoute_StateRoute.default.html
new file mode 100644
index 000000000..3221577cd
--- /dev/null
+++ b/docs/functions/app_components_StateRoute_StateRoute.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_components_StateRoute_Tree.default.html b/docs/functions/app_components_StateRoute_Tree.default.html
new file mode 100644
index 000000000..086d47ce5
--- /dev/null
+++ b/docs/functions/app_components_StateRoute_Tree.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_components_StateRoute_WebMetrics_WebMetrics.default.html b/docs/functions/app_components_StateRoute_WebMetrics_WebMetrics.default.html
new file mode 100644
index 000000000..bebc55096
--- /dev/null
+++ b/docs/functions/app_components_StateRoute_WebMetrics_WebMetrics.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_components_StateRoute_WebMetrics_WebMetricsContainer.default.html b/docs/functions/app_components_StateRoute_WebMetrics_WebMetricsContainer.default.html
new file mode 100644
index 000000000..b58378e67
--- /dev/null
+++ b/docs/functions/app_components_StateRoute_WebMetrics_WebMetricsContainer.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_components_TimeTravel_Dropdown.default.html b/docs/functions/app_components_TimeTravel_Dropdown.default.html
new file mode 100644
index 000000000..245760f42
--- /dev/null
+++ b/docs/functions/app_components_TimeTravel_Dropdown.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_components_TimeTravel_MainSlider.default.html b/docs/functions/app_components_TimeTravel_MainSlider.default.html
new file mode 100644
index 000000000..1860191ee
--- /dev/null
+++ b/docs/functions/app_components_TimeTravel_MainSlider.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_containers_ActionContainer.default.html b/docs/functions/app_containers_ActionContainer.default.html
new file mode 100644
index 000000000..c69ff5e0d
--- /dev/null
+++ b/docs/functions/app_containers_ActionContainer.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_containers_ButtonsContainer.default.html b/docs/functions/app_containers_ButtonsContainer.default.html
new file mode 100644
index 000000000..3bb53292c
--- /dev/null
+++ b/docs/functions/app_containers_ButtonsContainer.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_containers_ErrorContainer.default.html b/docs/functions/app_containers_ErrorContainer.default.html
new file mode 100644
index 000000000..5910f228e
--- /dev/null
+++ b/docs/functions/app_containers_ErrorContainer.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_containers_MainContainer.default.html b/docs/functions/app_containers_MainContainer.default.html
new file mode 100644
index 000000000..1c6506c35
--- /dev/null
+++ b/docs/functions/app_containers_MainContainer.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_containers_StateContainer.default.html b/docs/functions/app_containers_StateContainer.default.html
new file mode 100644
index 000000000..f4a33cee5
--- /dev/null
+++ b/docs/functions/app_containers_StateContainer.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_containers_TravelContainer.default.html b/docs/functions/app_containers_TravelContainer.default.html
new file mode 100644
index 000000000..e5b23447f
--- /dev/null
+++ b/docs/functions/app_containers_TravelContainer.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.aReactApp.html b/docs/functions/app_slices_mainSlice.aReactApp.html
new file mode 100644
index 000000000..9fa940405
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.aReactApp.html
@@ -0,0 +1,5 @@
+aReactApp | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.addNewSnapshots.html b/docs/functions/app_slices_mainSlice.addNewSnapshots.html
new file mode 100644
index 000000000..927e04c2a
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.addNewSnapshots.html
@@ -0,0 +1,5 @@
+addNewSnapshots | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.changeSlider.html b/docs/functions/app_slices_mainSlice.changeSlider.html
new file mode 100644
index 000000000..13856ff1c
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.changeSlider.html
@@ -0,0 +1,5 @@
+changeSlider | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.changeView.html b/docs/functions/app_slices_mainSlice.changeView.html
new file mode 100644
index 000000000..a9bd22d91
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.changeView.html
@@ -0,0 +1,5 @@
+changeView | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.deleteSeries.html b/docs/functions/app_slices_mainSlice.deleteSeries.html
new file mode 100644
index 000000000..e5716c31f
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.deleteSeries.html
@@ -0,0 +1,5 @@
+deleteSeries | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.deleteTab.html b/docs/functions/app_slices_mainSlice.deleteTab.html
new file mode 100644
index 000000000..c0ba6a548
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.deleteTab.html
@@ -0,0 +1,5 @@
+deleteTab | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.disconnected.html b/docs/functions/app_slices_mainSlice.disconnected.html
new file mode 100644
index 000000000..64cc470d9
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.disconnected.html
@@ -0,0 +1,5 @@
+disconnected | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.emptySnapshots.html b/docs/functions/app_slices_mainSlice.emptySnapshots.html
new file mode 100644
index 000000000..a77f7eaa5
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.emptySnapshots.html
@@ -0,0 +1,5 @@
+emptySnapshots | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.endConnect.html b/docs/functions/app_slices_mainSlice.endConnect.html
new file mode 100644
index 000000000..3a1484026
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.endConnect.html
@@ -0,0 +1,5 @@
+endConnect | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.importSnapshots.html b/docs/functions/app_slices_mainSlice.importSnapshots.html
new file mode 100644
index 000000000..93a8117bb
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.importSnapshots.html
@@ -0,0 +1,5 @@
+importSnapshots | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.initialConnect.html b/docs/functions/app_slices_mainSlice.initialConnect.html
new file mode 100644
index 000000000..f1bd99402
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.initialConnect.html
@@ -0,0 +1,5 @@
+initialConnect | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.launchContentScript.html b/docs/functions/app_slices_mainSlice.launchContentScript.html
new file mode 100644
index 000000000..43959e06c
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.launchContentScript.html
@@ -0,0 +1,5 @@
+launchContentScript | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.moveBackward.html b/docs/functions/app_slices_mainSlice.moveBackward.html
new file mode 100644
index 000000000..074e82a2a
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.moveBackward.html
@@ -0,0 +1,5 @@
+moveBackward | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.moveForward.html b/docs/functions/app_slices_mainSlice.moveForward.html
new file mode 100644
index 000000000..4e49c9f7c
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.moveForward.html
@@ -0,0 +1,5 @@
+moveForward | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.noDev.html b/docs/functions/app_slices_mainSlice.noDev.html
new file mode 100644
index 000000000..32953e238
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.noDev.html
@@ -0,0 +1,5 @@
+noDev | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.onHover.html b/docs/functions/app_slices_mainSlice.onHover.html
new file mode 100644
index 000000000..9b4096908
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.onHover.html
@@ -0,0 +1,5 @@
+onHover | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.onHoverExit.html b/docs/functions/app_slices_mainSlice.onHoverExit.html
new file mode 100644
index 000000000..13d4daaa2
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.onHoverExit.html
@@ -0,0 +1,5 @@
+onHoverExit | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.pause.html b/docs/functions/app_slices_mainSlice.pause.html
new file mode 100644
index 000000000..9a81fdf86
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.pause.html
@@ -0,0 +1,5 @@
+pause | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.playForward.html b/docs/functions/app_slices_mainSlice.playForward.html
new file mode 100644
index 000000000..e5ff51534
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.playForward.html
@@ -0,0 +1,5 @@
+playForward | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.resetSlider.html b/docs/functions/app_slices_mainSlice.resetSlider.html
new file mode 100644
index 000000000..14a10c9be
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.resetSlider.html
@@ -0,0 +1,5 @@
+resetSlider | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.save.html b/docs/functions/app_slices_mainSlice.save.html
new file mode 100644
index 000000000..3893f0281
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.save.html
@@ -0,0 +1,5 @@
+save | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.setCurrentLocation.html b/docs/functions/app_slices_mainSlice.setCurrentLocation.html
new file mode 100644
index 000000000..3553c6e82
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.setCurrentLocation.html
@@ -0,0 +1,5 @@
+setCurrentLocation | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.setCurrentTabInApp.html b/docs/functions/app_slices_mainSlice.setCurrentTabInApp.html
new file mode 100644
index 000000000..ec13deb40
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.setCurrentTabInApp.html
@@ -0,0 +1,5 @@
+setCurrentTabInApp | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.setPort.html b/docs/functions/app_slices_mainSlice.setPort.html
new file mode 100644
index 000000000..553777810
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.setPort.html
@@ -0,0 +1,5 @@
+setPort | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.setTab.html b/docs/functions/app_slices_mainSlice.setTab.html
new file mode 100644
index 000000000..d999f376c
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.setTab.html
@@ -0,0 +1,5 @@
+setTab | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.startPlaying.html b/docs/functions/app_slices_mainSlice.startPlaying.html
new file mode 100644
index 000000000..2a14abb33
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.startPlaying.html
@@ -0,0 +1,5 @@
+startPlaying | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.startReconnect.html b/docs/functions/app_slices_mainSlice.startReconnect.html
new file mode 100644
index 000000000..5c22bb10b
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.startReconnect.html
@@ -0,0 +1,5 @@
+startReconnect | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.toggleExpanded.html b/docs/functions/app_slices_mainSlice.toggleExpanded.html
new file mode 100644
index 000000000..5e923b929
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.toggleExpanded.html
@@ -0,0 +1,5 @@
+toggleExpanded | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.toggleMode.html b/docs/functions/app_slices_mainSlice.toggleMode.html
new file mode 100644
index 000000000..3d0363a0e
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.toggleMode.html
@@ -0,0 +1,5 @@
+toggleMode | reactime
\ No newline at end of file
diff --git a/docs/functions/app_slices_mainSlice.tutorialSaveSeriesToggle.html b/docs/functions/app_slices_mainSlice.tutorialSaveSeriesToggle.html
new file mode 100644
index 000000000..d761b924e
--- /dev/null
+++ b/docs/functions/app_slices_mainSlice.tutorialSaveSeriesToggle.html
@@ -0,0 +1,5 @@
+tutorialSaveSeriesToggle | reactime
\ No newline at end of file
diff --git a/docs/functions/backend_controllers_createComponentActionsRecord.default.html b/docs/functions/backend_controllers_createComponentActionsRecord.default.html
new file mode 100644
index 000000000..9c7f0067b
--- /dev/null
+++ b/docs/functions/backend_controllers_createComponentActionsRecord.default.html
@@ -0,0 +1,7 @@
+default | reactime
This is a recursive function that runs after Fiber commit, if user is navigating to a new route during jumping. This function performs the following logic:
+
+
Traverse from FiberRootNode
+
If the component is stateful, extract its update methods & push to the componentActionRecord array
\ No newline at end of file
diff --git a/docs/functions/backend_controllers_createTree.default.html b/docs/functions/backend_controllers_createTree.default.html
new file mode 100644
index 000000000..e5a2f2ce7
--- /dev/null
+++ b/docs/functions/backend_controllers_createTree.default.html
@@ -0,0 +1,10 @@
+default | reactime
This is a function that runs after every Fiber commit using the following logic:
+
+
Traverse from FiberRootNode
+
Create an instance of custom Tree class
+
Build a new state snapshot
+Every time a state change is made in the accompanying app, the extension creates a Tree “snapshot” of the current state, and adds it to the current “cache” of snapshots in the extension
\ No newline at end of file
diff --git a/docs/functions/backend_controllers_statePropExtractors.filterAndFormatData.html b/docs/functions/backend_controllers_statePropExtractors.filterAndFormatData.html
new file mode 100644
index 000000000..3ab5d17d9
--- /dev/null
+++ b/docs/functions/backend_controllers_statePropExtractors.filterAndFormatData.html
@@ -0,0 +1,6 @@
+filterAndFormatData | reactime
This function receives raw Data from REACT DEV TOOL and filter the Data based on the exclude list. The filterd data is then converted to string (if applicable) before being sent to reacTime front end.
+NOTE: the formating is important since Chrome will only accept JSON.stringfiable object. Circular object & function are not JSON stringifiable.
+
Parameters
reactDevData: { [key: string]: any; }
The data object obtained from React Devtool. Ex: memoizedProps, memoizedState
+
[key: string]: any
reactimeData: ReactimeData = {}
The cached data from the current component. This can be data about states, context and/or props of the component.
+
Returns ReactimeData
The update component data object to send to front end of ReactTime
\ No newline at end of file
diff --git a/docs/functions/backend_controllers_statePropExtractors.getHooksNames.html b/docs/functions/backend_controllers_statePropExtractors.getHooksNames.html
new file mode 100644
index 000000000..aa026fc18
--- /dev/null
+++ b/docs/functions/backend_controllers_statePropExtractors.getHooksNames.html
@@ -0,0 +1,6 @@
+getHooksNames | reactime
This function receive a string representation of a functional component. This function then use JSX parser to traverse through the function string, and extract the state variable name and its corresponding setState method.
+
Parameters
elementType: string
The string representation of a functional component
+
Returns { hookName: string; varName: string; }[]
+
An array of objects with key: hookName (the name of setState method) | value: varName (the state variable name)
\ No newline at end of file
diff --git a/docs/functions/backend_controllers_statePropExtractors.getHooksStateAndUpdateMethod.html b/docs/functions/backend_controllers_statePropExtractors.getHooksStateAndUpdateMethod.html
new file mode 100644
index 000000000..520204e42
--- /dev/null
+++ b/docs/functions/backend_controllers_statePropExtractors.getHooksStateAndUpdateMethod.html
@@ -0,0 +1,9 @@
+getHooksStateAndUpdateMethod | reactime
\ No newline at end of file
diff --git a/docs/functions/backend_controllers_throttle.default.html b/docs/functions/backend_controllers_throttle.default.html
new file mode 100644
index 000000000..da61292c3
--- /dev/null
+++ b/docs/functions/backend_controllers_throttle.default.html
@@ -0,0 +1,5 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/backend_controllers_timeJump.default.html b/docs/functions/backend_controllers_timeJump.default.html
new file mode 100644
index 000000000..15efcc821
--- /dev/null
+++ b/docs/functions/backend_controllers_timeJump.default.html
@@ -0,0 +1,4 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/backend_models_tree.serializeState.html b/docs/functions/backend_models_tree.serializeState.html
new file mode 100644
index 000000000..6d4256557
--- /dev/null
+++ b/docs/functions/backend_models_tree.serializeState.html
@@ -0,0 +1,6 @@
+serializeState | reactime
Object that contains the current state of the application or system that needs to be serialized.
+
Returns any
+
Depclone of the passed in state. If there is any circulate state, return 'circularState'
+
+
Function
serializeState - In the context of React, state is often used to store data that determines the behavior and appearance of a component. By serializing the state, we can preserve the component's data across page refreshes, server-side rendering, and other transitions. Additionally, by serializing the state and passing it to a child component, we can create a deep clone of the state, which allows the child component to manipulate the state without affecting the original component. This is useful in situations where we want to keep the state of the parent component immutable, but still allow child components to modify a copy of the state.
\ No newline at end of file
diff --git a/docs/functions/backend_routers_linkFiber.default.html b/docs/functions/backend_routers_linkFiber.default.html
new file mode 100644
index 000000000..53509591c
--- /dev/null
+++ b/docs/functions/backend_routers_linkFiber.default.html
@@ -0,0 +1,12 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/functions/backend_routers_snapShot.default.html b/docs/functions/backend_routers_snapShot.default.html
new file mode 100644
index 000000000..888258d9c
--- /dev/null
+++ b/docs/functions/backend_routers_snapShot.default.html
@@ -0,0 +1,5 @@
+default | reactime
This function creates a new snapShot fiber tree with the provided fiberRoot, then send the updated snapshot to front end.
+This runs after every Fiber commit if mode is not jumping.
+This
The fiberRootNode, which is the root node of the fiber tree is stored in the current property of the fiber root object which we can use to traverse the tree
\ No newline at end of file
diff --git a/docs/hierarchy.html b/docs/hierarchy.html
new file mode 100644
index 000000000..5c36716aa
--- /dev/null
+++ b/docs/hierarchy.html
@@ -0,0 +1 @@
+reactime
\ No newline at end of file
diff --git a/docs/index.html b/docs/index.html
new file mode 100644
index 000000000..1b7992086
--- /dev/null
+++ b/docs/index.html
@@ -0,0 +1,275 @@
+reactime
Reactime is an open-source Chrome developer tool for time travel debugging and performance monitoring in React applications. Reactime enables developers to record snapshots of application state, jump between and inspect state snapshots, and monitor performance metrics such as component render time and render frequency.
You can view your application's file structure and click on a snapshot to view
+your app's state. State can be visualized in a Component Graph, JSON Tree, or
+Performance Graph. Snapshots can be compared with the previous snapshot, which can
+be viewed in Diff mode.
+
+
Whenever the state is changed (whenever setState, useState is called), this
+extension will create a snapshot of the current state tree and record it. Each
+snapshot will be displayed in Chrome DevTools under the Reactime panel.
+
+
You can save a series of state snapshots and use it to analyze changes in
+component render performance between the current and the previous series of snapshots.
+You can also name specific snapshots and compare all snapshots with the same
+name.
+
+
When toggled to a specific snapshot, a visualization of the individual
+components of the snapshot will be displayed. This can be done under the same
+Performance tab where the snapshots are rendered. You will also find details of
+each component upon hovering.
+
+
If Reactime loses its connection to the tab you're monitoring, simply click the "reconnect" button to resume your work. You'll notice a circle located to the right of the button, which will appear as either red (indicating disconnection) or green (signifying a successful reconnection).
+
+
One of the most common issues that affects performance in React is unnecessary
+render cycles. This problem can be fixed by checking your renders in the
+Performance tab in Chrome DevTools under the Reactime panel.
+
+
Using the actions sidebar, a user can jump to any previously recorded snapshots.
+Hitting the jump button on any snapshot will allow a user to view state data at
+any point in the history of the target application.
+
+
Reactime offers full support for Gatsby applications. You would be able to
+identify unnecessary renders, duration of each rendering, travel-debugging
+features and visual representation of the tree components.
+
+
Reactime offers debugging and performance tools for Next.js apps: time-traveling
+debugging, preventing unnecessary component re-renders and making your
+application faster.
+
+
Reactime offers debugging and performance tools for Remix apps (in beta). Support still
+needs to be added for multi-route time traveling. Every other feature works.
+
+
Reactime offers support for TypeScript applications using stateful class
+components and functional components. Further testing and development is
+required for custom hooks and Concurrent Mode.
+
+
After cloning this repository, developers can simply run npm run docs at the
+root level and serve the dynamically generated /docs/index.html file on a
+browser. Doing so will provide a readable, extensible, and interactive GUI view
+of the structure and interfaces of the codebase.
+
+
Hover over a component to view tooltip details on state visualizations
+
Double-click to collapse child components
+
Click to focus on a portion of the component map
+
A dropdown to support the development of projects on multiple tabs
+
Intuitive navigation between state snapshots
+
Locked/unlocked feature allowing temporary pause of state monitoring
+
+
What's New!
+
+
Reactime 22.0 heralds significant enhancements, addressing core performance issues and fortifying the overall application's stability and reliability. In our pursuit of consistent evolution, we've updated outdated packages and transitioned state management to Redux Toolkit. This strategic shift not only modernizes our tech stack but also ensures our application is positioned for easier maintenance and scalability in the future. Complementing these upgrades, this release also mends various bugs. The debut of features like the reconnection button, a status icon, and the integration of key web metrics – Cumulative Layout Shift (CLS) and Interaction To Next Paint (INP) – amplifies its functionality and offers users a more refined experience.
+
Taking a deeper look
+
Addressing the persistent disconnection/black screen issues that occasionally affected users during regular application use, we made decisive improvements by removing the "keepAlive" function and implementing robust logic to fix the core issue. This enabled us to refine the communication protocol between our application and the Chrome extension API, delivering a more consistent and stable connection. To further enhance the user experience and foster resilience, we introduced a user-friendly reconnection feature. This not only offers users a swift recovery route but also acts as an added layer of protection against any unexpected disconnections in the future.
+
In an effort to improve maintainability, scalability, and longevity, we updated and phased out certain dependencies. To name a few, we moved away from the Immer library and transitioned our state management to use Redux Toolkit, while upgrading the Web Vitals API from version 1.1.2 to 3.5.0, allowing us to harness a broader range of web metrics. As part of this transition, we also converted all of the existing tests to work with the updated state management system, while further expanding testing suites to increase overall testing coverage. Lastly, we achieved a notable increase in TypeScript coverage, strengthening code quality and early detection of potential development issues.
+
For an improved user experience, we set our sights on several impactful enhancements. First on our list is the reconnection feature, designed as a protective measure for those unexpected moments when a user gets disconnected. In such events, an intuitive pop-up dialog will instantly emerge, offering users a seamless way to dive right back into their session, while also offering the option to download recorded snapshots of state as a JSON file. Complementing this, we've integrated a dynamic status indicator that transparently displays a user's current app status, highlighting whether they're online or offline. But that's not all. We've enriched the application with two vital web performance metrics: Cumulative Layout Shift (CLS) and Interaction to Next Paint (INP). These metrics are pivotal, providing developers with insights into layout stability and responsiveness, empowering them to optimize user interactions with precision.
+
If you would like to read more about previous releases, click here!
+
+
+
Installation
+
+
To get started, install the Reactime
+extension
+from Chrome Web Store.
+
After installing Reactime, you can test its functionalities with your React
+application in development mode.
+
Please note, the time jumping feature will ONLY work when your
+application is running in development mode. In production mode, you are
+able to view your application’s component map but no additional features.
+
NOTE: The React Developer Tools
+extension
+is also required for Reactime to run, if you do not already have it installed on
+your browser.
Go to Chrome Extensions (make sure Chrome Extension is in Developer Mode) for
+manual installation in (https://developer.chrome.com/extensions/faq#faq-dev-01)
+and click on Load Unpacked. Use src/extension/build/ to load this extension.
+Turn on 'Allow access to file URLs' in the extension details page if testing
+locally.
Reactime initially runs using the dev tools global hook from the Chrome API. It
+takes time for Chrome to load this. Try refreshing your application a couple of
+times until you see Reactime running.
Reactime works in tandem with the React Developer Tools to access a React application's Fiber tree; under the hood, Reactime traverses the Fiber tree through the React Developer Tool's global hook, pulling all relevant information needed to display to the developer
Reactime is an open-source project, and we'd love to hear from you about
+improving the user experience. Please read DEVELOPER README,
+and create a pull request (or issue) to propose and collaborate on changes to Reactime.
With the release of Node v18.12.1(LTS) on 11/4/22, the script has been updated to
+'npm run dev' | 'npm run build' for backwards compatibility. For version
+Node v16.16.0, please use script 'npm run devlegacy' | 'npm run buildlegacy'
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.ActionContainerProps.html b/docs/interfaces/app_FrontendTypes.ActionContainerProps.html
new file mode 100644
index 000000000..bc136a3ef
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.ActionContainerProps.html
@@ -0,0 +1,4 @@
+ActionContainerProps | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.ActionObj.html b/docs/interfaces/app_FrontendTypes.ActionObj.html
new file mode 100644
index 000000000..385950ddc
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.ActionObj.html
@@ -0,0 +1,4 @@
+ActionObj | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.ActionProps.html b/docs/interfaces/app_FrontendTypes.ActionProps.html
new file mode 100644
index 000000000..02659f23b
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.ActionProps.html
@@ -0,0 +1,15 @@
+ActionProps | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.BarGraphBase.html b/docs/interfaces/app_FrontendTypes.BarGraphBase.html
new file mode 100644
index 000000000..829346b79
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.BarGraphBase.html
@@ -0,0 +1,5 @@
+BarGraphBase | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.BarGraphComparisonAction.html b/docs/interfaces/app_FrontendTypes.BarGraphComparisonAction.html
new file mode 100644
index 000000000..74cfa8dc4
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.BarGraphComparisonAction.html
@@ -0,0 +1,9 @@
+BarGraphComparisonAction | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.BarGraphComparisonProps.html b/docs/interfaces/app_FrontendTypes.BarGraphComparisonProps.html
new file mode 100644
index 000000000..5675c09f1
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.BarGraphComparisonProps.html
@@ -0,0 +1,8 @@
+BarGraphComparisonProps | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.BarGraphProps.html b/docs/interfaces/app_FrontendTypes.BarGraphProps.html
new file mode 100644
index 000000000..cbdb88223
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.BarGraphProps.html
@@ -0,0 +1,10 @@
+BarGraphProps | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.BarStackProp.html b/docs/interfaces/app_FrontendTypes.BarStackProp.html
new file mode 100644
index 000000000..ec6535921
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.BarStackProp.html
@@ -0,0 +1,4 @@
+BarStackProp | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.ControlStyles.html b/docs/interfaces/app_FrontendTypes.ControlStyles.html
new file mode 100644
index 000000000..54a0dce32
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.ControlStyles.html
@@ -0,0 +1,2 @@
+ControlStyles | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.CurrentTab.html b/docs/interfaces/app_FrontendTypes.CurrentTab.html
new file mode 100644
index 000000000..14eb5a5a8
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.CurrentTab.html
@@ -0,0 +1,16 @@
+CurrentTab | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.DefaultMargin.html b/docs/interfaces/app_FrontendTypes.DefaultMargin.html
new file mode 100644
index 000000000..5551779ce
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.DefaultMargin.html
@@ -0,0 +1,5 @@
+DefaultMargin | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.DiffProps.html b/docs/interfaces/app_FrontendTypes.DiffProps.html
new file mode 100644
index 000000000..a6a0e563b
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.DiffProps.html
@@ -0,0 +1,3 @@
+DiffProps | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.DiffRouteProps.html b/docs/interfaces/app_FrontendTypes.DiffRouteProps.html
new file mode 100644
index 000000000..fe7c4dd14
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.DiffRouteProps.html
@@ -0,0 +1,2 @@
+DiffRouteProps | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.DropDownStyle.html b/docs/interfaces/app_FrontendTypes.DropDownStyle.html
new file mode 100644
index 000000000..b3e2e0bc5
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.DropDownStyle.html
@@ -0,0 +1,9 @@
+DropDownStyle | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.DropdownProps.html b/docs/interfaces/app_FrontendTypes.DropdownProps.html
new file mode 100644
index 000000000..b13c40b09
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.DropdownProps.html
@@ -0,0 +1,4 @@
+DropdownProps | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.ErrorContainerProps.html b/docs/interfaces/app_FrontendTypes.ErrorContainerProps.html
new file mode 100644
index 000000000..c7e8dc8aa
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.ErrorContainerProps.html
@@ -0,0 +1,2 @@
+ErrorContainerProps | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.HandleProps.html b/docs/interfaces/app_FrontendTypes.HandleProps.html
new file mode 100644
index 000000000..f3ad2bfb0
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.HandleProps.html
@@ -0,0 +1,4 @@
+HandleProps | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.InitialState.html b/docs/interfaces/app_FrontendTypes.InitialState.html
new file mode 100644
index 000000000..7b282709e
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.InitialState.html
@@ -0,0 +1,8 @@
+InitialState | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.LinkComponent.html b/docs/interfaces/app_FrontendTypes.LinkComponent.html
new file mode 100644
index 000000000..e3ba72d4b
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.LinkComponent.html
@@ -0,0 +1,4 @@
+LinkComponent | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.LinkControlProps.html b/docs/interfaces/app_FrontendTypes.LinkControlProps.html
new file mode 100644
index 000000000..11c7d3e80
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.LinkControlProps.html
@@ -0,0 +1,12 @@
+LinkControlProps | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.LinkTypesProps.html b/docs/interfaces/app_FrontendTypes.LinkTypesProps.html
new file mode 100644
index 000000000..94508a122
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.LinkTypesProps.html
@@ -0,0 +1,6 @@
+LinkTypesProps | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.MainSliderProps.html b/docs/interfaces/app_FrontendTypes.MainSliderProps.html
new file mode 100644
index 000000000..e1e1a94b4
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.MainSliderProps.html
@@ -0,0 +1,3 @@
+MainSliderProps | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.MainState.html b/docs/interfaces/app_FrontendTypes.MainState.html
new file mode 100644
index 000000000..22ec4dfaa
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.MainState.html
@@ -0,0 +1,8 @@
+MainState | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.Margin.html b/docs/interfaces/app_FrontendTypes.Margin.html
new file mode 100644
index 000000000..dd6aa151b
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.Margin.html
@@ -0,0 +1,5 @@
+Margin | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.Node.html b/docs/interfaces/app_FrontendTypes.Node.html
new file mode 100644
index 000000000..dfcb4dbda
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.Node.html
@@ -0,0 +1,3 @@
+Node | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.Obj.html b/docs/interfaces/app_FrontendTypes.Obj.html
new file mode 100644
index 000000000..f95b07c73
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.Obj.html
@@ -0,0 +1,6 @@
+Obj | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.OptionsCursorTrueWithMargin.html b/docs/interfaces/app_FrontendTypes.OptionsCursorTrueWithMargin.html
new file mode 100644
index 000000000..644b79024
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.OptionsCursorTrueWithMargin.html
@@ -0,0 +1,4 @@
+OptionsCursorTrueWithMargin | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.PerfData.html b/docs/interfaces/app_FrontendTypes.PerfData.html
new file mode 100644
index 000000000..9be0ae923
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.PerfData.html
@@ -0,0 +1,4 @@
+PerfData | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.PerformanceVisxProps.html b/docs/interfaces/app_FrontendTypes.PerformanceVisxProps.html
new file mode 100644
index 000000000..934522a8c
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.PerformanceVisxProps.html
@@ -0,0 +1,5 @@
+PerformanceVisxProps | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.RootState.html b/docs/interfaces/app_FrontendTypes.RootState.html
new file mode 100644
index 000000000..13523fe8a
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.RootState.html
@@ -0,0 +1,2 @@
+RootState | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.Series.html b/docs/interfaces/app_FrontendTypes.Series.html
new file mode 100644
index 000000000..67a387606
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.Series.html
@@ -0,0 +1,3 @@
+Series | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.Snapshots.html b/docs/interfaces/app_FrontendTypes.Snapshots.html
new file mode 100644
index 000000000..fb9830371
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.Snapshots.html
@@ -0,0 +1,6 @@
+Snapshots | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.StateContainerProps.html b/docs/interfaces/app_FrontendTypes.StateContainerProps.html
new file mode 100644
index 000000000..eb8d4c3ce
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.StateContainerProps.html
@@ -0,0 +1,8 @@
+StateContainerProps | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.StateRouteProps.html b/docs/interfaces/app_FrontendTypes.StateRouteProps.html
new file mode 100644
index 000000000..ec67328ff
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.StateRouteProps.html
@@ -0,0 +1,7 @@
+StateRouteProps | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.StatelessCleaning.html b/docs/interfaces/app_FrontendTypes.StatelessCleaning.html
new file mode 100644
index 000000000..6ce6dd28b
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.StatelessCleaning.html
@@ -0,0 +1,6 @@
+StatelessCleaning | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.StepsObj.html b/docs/interfaces/app_FrontendTypes.StepsObj.html
new file mode 100644
index 000000000..1b3255b62
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.StepsObj.html
@@ -0,0 +1,5 @@
+StepsObj | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.ToolTipStyles.html b/docs/interfaces/app_FrontendTypes.ToolTipStyles.html
new file mode 100644
index 000000000..4b86a1500
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.ToolTipStyles.html
@@ -0,0 +1,11 @@
+ToolTipStyles | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.TooltipData.html b/docs/interfaces/app_FrontendTypes.TooltipData.html
new file mode 100644
index 000000000..d6b340c8c
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.TooltipData.html
@@ -0,0 +1,9 @@
+TooltipData | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.TravelContainerProps.html b/docs/interfaces/app_FrontendTypes.TravelContainerProps.html
new file mode 100644
index 000000000..063cd8e65
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.TravelContainerProps.html
@@ -0,0 +1,2 @@
+TravelContainerProps | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.TreeProps.html b/docs/interfaces/app_FrontendTypes.TreeProps.html
new file mode 100644
index 000000000..4bbe5b65a
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.TreeProps.html
@@ -0,0 +1,4 @@
+TreeProps | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.TutorialProps.html b/docs/interfaces/app_FrontendTypes.TutorialProps.html
new file mode 100644
index 000000000..1962772d8
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.TutorialProps.html
@@ -0,0 +1,3 @@
+TutorialProps | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.TutorialState.html b/docs/interfaces/app_FrontendTypes.TutorialState.html
new file mode 100644
index 000000000..467731179
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.TutorialState.html
@@ -0,0 +1,2 @@
+TutorialState | reactime
\ No newline at end of file
diff --git a/docs/interfaces/app_FrontendTypes.snapshot.html b/docs/interfaces/app_FrontendTypes.snapshot.html
new file mode 100644
index 000000000..d59adf2cd
--- /dev/null
+++ b/docs/interfaces/app_FrontendTypes.snapshot.html
@@ -0,0 +1,6 @@
+snapshot | reactime
\ No newline at end of file
diff --git a/docs/interfaces/backend_types_backendTypes.ComponentData.html b/docs/interfaces/backend_types_backendTypes.ComponentData.html
new file mode 100644
index 000000000..a402fc153
--- /dev/null
+++ b/docs/interfaces/backend_types_backendTypes.ComponentData.html
@@ -0,0 +1,34 @@
+ComponentData | reactime
actualDuration - The time taken to render the current Fiber node and its descendants during the previous render cycle. This value is used to optimize the rendering of components and to provide performance metrics to developers.
+
Member
actualStartTime - The time at which the rendering of the current Fiber node started during the previous render cycle.
+
Member
key - The key a user assigned to the component or null if they didn't assign one
+
Member
context - {in experiment} - An object contains all context information of the current component
+
Member
index - {class component only} - The index of the bound setState method stored in componentActionsRecord
+
Member
hooksState - {functional component only} - An object contains all states of the current functional component
+
Member
hooksIndex - {functional component only} - An array of index of the bound dispatch method stored in componentActionsRecord
+
Member
props - An object contains all props of the current component
+
Member
selfBaseDuration - The base duration of the current Fiber node's render phase (excluding the time taken to render its children). This field is only set when the enableProfilerTimer flag is enabled.
+
Member
state - {class component only} - An object contains all states of the current class component
+
Member
treeBaseDuration - The total base duration of the current Fiber node's subtree. This field is only set when the enableProfilerTimer flag is enabled.
\ No newline at end of file
diff --git a/docs/interfaces/backend_types_backendTypes.HookStateItem.html b/docs/interfaces/backend_types_backendTypes.HookStateItem.html
new file mode 100644
index 000000000..6794baa30
--- /dev/null
+++ b/docs/interfaces/backend_types_backendTypes.HookStateItem.html
@@ -0,0 +1,7 @@
+HookStateItem | reactime
\ No newline at end of file
diff --git a/docs/interfaces/backend_types_backendTypes.MsgData.html b/docs/interfaces/backend_types_backendTypes.MsgData.html
new file mode 100644
index 000000000..036940116
--- /dev/null
+++ b/docs/interfaces/backend_types_backendTypes.MsgData.html
@@ -0,0 +1,3 @@
+MsgData | reactime
\ No newline at end of file
diff --git a/docs/interfaces/backend_types_backendTypes.Snapshot.html b/docs/interfaces/backend_types_backendTypes.Snapshot.html
new file mode 100644
index 000000000..143edce98
--- /dev/null
+++ b/docs/interfaces/backend_types_backendTypes.Snapshot.html
@@ -0,0 +1,5 @@
+Snapshot | reactime
\ No newline at end of file
diff --git a/docs/interfaces/backend_types_backendTypes.Status.html b/docs/interfaces/backend_types_backendTypes.Status.html
new file mode 100644
index 000000000..db7203cf0
--- /dev/null
+++ b/docs/interfaces/backend_types_backendTypes.Status.html
@@ -0,0 +1,14 @@
+Status | reactime
\ No newline at end of file
diff --git a/docs/interfaces/backend_types_linkFiberTypes.DevTools.html b/docs/interfaces/backend_types_linkFiberTypes.DevTools.html
new file mode 100644
index 000000000..7a3967979
--- /dev/null
+++ b/docs/interfaces/backend_types_linkFiberTypes.DevTools.html
@@ -0,0 +1,18 @@
+DevTools | reactime
DevTools - A global object provided by the React Developer Tools extension. It provides a set of methods that allow developers to inspect and manipulate React components in the browser.
getFiberRoots - get the Set of fiber roots that are currently mounted for the given rendererID. If not found, initalize a new empty Set at renderID key.
+
Method
getFiberRoots - get the Set of fiber roots that are currently mounted for the given rendererID. If not found, initalize a new empty Set at renderID key.
+
Param: renderID
a unique identifier for a specific instance of a React renderer. When a React application is first mounted, it will receive a rendererID. This rendererID will remain the same for the entire lifecycle of the application, even if the state is updated and the components are re-rendered/unmounted/added. However, if the application is unmounted and re-mounted again, it will receive a new rendererID.
root of the rendered tree (a.k.a the root of the React Application)
+
priorityLevel: any
Returns void
void
+
Method
onCommitFiberRoot - After the state of a component in a React Application is updated, the virtual DOM will be updated. When a render has been commited for a root, onCommitFiberRoot will be invoked to determine if the component is being mounted, updated, or unmounted. After that, this method will send update information to the React DevTools to update its UI to reflect the change.
+
Method
onCommitFiberRoot - After the state of a component in a React Application is updated, the virtual DOM will be updated. When a render has been commited for a root, onCommitFiberRoot will be invoked to determine if the component is being mounted, updated, or unmounted. After that, this method will send update information to the React DevTools to update its UI to reflect the change.
+
Param: rendererID
a unique identifier for a specific instance of a React renderer
+
Param: root
root of the rendered tree (a.k.a the root of the React Application)
\ No newline at end of file
diff --git a/docs/modules/app.html b/docs/modules/app.html
new file mode 100644
index 000000000..9a5a9062c
--- /dev/null
+++ b/docs/modules/app.html
@@ -0,0 +1 @@
+app | reactime
\ No newline at end of file
diff --git a/docs/modules/app_App.html b/docs/modules/app_App.html
new file mode 100644
index 000000000..eb1f323df
--- /dev/null
+++ b/docs/modules/app_App.html
@@ -0,0 +1,2 @@
+app/App | reactime
\ No newline at end of file
diff --git a/docs/modules/app_FrontendTypes.html b/docs/modules/app_FrontendTypes.html
new file mode 100644
index 000000000..9691e53cd
--- /dev/null
+++ b/docs/modules/app_FrontendTypes.html
@@ -0,0 +1,44 @@
+app/FrontendTypes | reactime
\ No newline at end of file
diff --git a/docs/modules/app_components_Actions_Action.html b/docs/modules/app_components_Actions_Action.html
new file mode 100644
index 000000000..679f3c993
--- /dev/null
+++ b/docs/modules/app_components_Actions_Action.html
@@ -0,0 +1,2 @@
+app/components/Actions/Action | reactime
\ No newline at end of file
diff --git a/docs/modules/app_components_Actions_RouteDescription.html b/docs/modules/app_components_Actions_RouteDescription.html
new file mode 100644
index 000000000..84d87869a
--- /dev/null
+++ b/docs/modules/app_components_Actions_RouteDescription.html
@@ -0,0 +1,2 @@
+app/components/Actions/RouteDescription | reactime
\ No newline at end of file
diff --git a/docs/modules/app_components_Actions_SwitchApp.html b/docs/modules/app_components_Actions_SwitchApp.html
new file mode 100644
index 000000000..a21c4fcd5
--- /dev/null
+++ b/docs/modules/app_components_Actions_SwitchApp.html
@@ -0,0 +1,2 @@
+app/components/Actions/SwitchApp | reactime
\ No newline at end of file
diff --git a/docs/modules/app_components_Buttons_StatusDot.html b/docs/modules/app_components_Buttons_StatusDot.html
new file mode 100644
index 000000000..33de43c83
--- /dev/null
+++ b/docs/modules/app_components_Buttons_StatusDot.html
@@ -0,0 +1,2 @@
+app/components/Buttons/StatusDot | reactime
\ No newline at end of file
diff --git a/docs/modules/app_components_Buttons_Tutorial.html b/docs/modules/app_components_Buttons_Tutorial.html
new file mode 100644
index 000000000..f69fa8e78
--- /dev/null
+++ b/docs/modules/app_components_Buttons_Tutorial.html
@@ -0,0 +1,2 @@
+app/components/Buttons/Tutorial | reactime
\ No newline at end of file
diff --git a/docs/modules/app_components_DiffRoute_Diff.html b/docs/modules/app_components_DiffRoute_Diff.html
new file mode 100644
index 000000000..dacf73634
--- /dev/null
+++ b/docs/modules/app_components_DiffRoute_Diff.html
@@ -0,0 +1,2 @@
+app/components/DiffRoute/Diff | reactime
\ No newline at end of file
diff --git a/docs/modules/app_components_DiffRoute_DiffRoute.html b/docs/modules/app_components_DiffRoute_DiffRoute.html
new file mode 100644
index 000000000..297420fe1
--- /dev/null
+++ b/docs/modules/app_components_DiffRoute_DiffRoute.html
@@ -0,0 +1,2 @@
+app/components/DiffRoute/DiffRoute | reactime
\ No newline at end of file
diff --git a/docs/modules/app_components_ErrorHandling_ErrorHandler.html b/docs/modules/app_components_ErrorHandling_ErrorHandler.html
new file mode 100644
index 000000000..2f52c9a60
--- /dev/null
+++ b/docs/modules/app_components_ErrorHandling_ErrorHandler.html
@@ -0,0 +1,2 @@
+app/components/ErrorHandling/ErrorHandler | reactime
\ No newline at end of file
diff --git a/docs/modules/app_components_ErrorHandling_ErrorMsg.html b/docs/modules/app_components_ErrorHandling_ErrorMsg.html
new file mode 100644
index 000000000..4cc027203
--- /dev/null
+++ b/docs/modules/app_components_ErrorHandling_ErrorMsg.html
@@ -0,0 +1,2 @@
+app/components/ErrorHandling/ErrorMsg | reactime
\ No newline at end of file
diff --git a/docs/modules/app_components_ErrorHandling_Loader.html b/docs/modules/app_components_ErrorHandling_Loader.html
new file mode 100644
index 000000000..0644759f2
--- /dev/null
+++ b/docs/modules/app_components_ErrorHandling_Loader.html
@@ -0,0 +1,2 @@
+app/components/ErrorHandling/Loader | reactime
\ No newline at end of file
diff --git a/docs/modules/app_components_StateRoute_ComponentMap_ComponentMap.html b/docs/modules/app_components_StateRoute_ComponentMap_ComponentMap.html
new file mode 100644
index 000000000..2ad83ccf9
--- /dev/null
+++ b/docs/modules/app_components_StateRoute_ComponentMap_ComponentMap.html
@@ -0,0 +1,2 @@
+app/components/StateRoute/ComponentMap/ComponentMap | reactime
\ No newline at end of file
diff --git a/docs/modules/app_components_StateRoute_ComponentMap_LinkControls.html b/docs/modules/app_components_StateRoute_ComponentMap_LinkControls.html
new file mode 100644
index 000000000..2d0cc7031
--- /dev/null
+++ b/docs/modules/app_components_StateRoute_ComponentMap_LinkControls.html
@@ -0,0 +1,2 @@
+app/components/StateRoute/ComponentMap/LinkControls | reactime
\ No newline at end of file
diff --git a/docs/modules/app_components_StateRoute_ComponentMap_ToolTipDataDisplay.html b/docs/modules/app_components_StateRoute_ComponentMap_ToolTipDataDisplay.html
new file mode 100644
index 000000000..93d7fc268
--- /dev/null
+++ b/docs/modules/app_components_StateRoute_ComponentMap_ToolTipDataDisplay.html
@@ -0,0 +1,2 @@
+app/components/StateRoute/ComponentMap/ToolTipDataDisplay | reactime
\ No newline at end of file
diff --git a/docs/modules/app_components_StateRoute_ComponentMap_getLinkComponent.html b/docs/modules/app_components_StateRoute_ComponentMap_getLinkComponent.html
new file mode 100644
index 000000000..ded9c6cf3
--- /dev/null
+++ b/docs/modules/app_components_StateRoute_ComponentMap_getLinkComponent.html
@@ -0,0 +1,2 @@
+app/components/StateRoute/ComponentMap/getLinkComponent | reactime
\ No newline at end of file
diff --git a/docs/modules/app_components_StateRoute_History.html b/docs/modules/app_components_StateRoute_History.html
new file mode 100644
index 000000000..292cc4ff2
--- /dev/null
+++ b/docs/modules/app_components_StateRoute_History.html
@@ -0,0 +1,2 @@
+app/components/StateRoute/History | reactime
\ No newline at end of file
diff --git a/docs/modules/app_components_StateRoute_PerformanceVisx_BarGraph.html b/docs/modules/app_components_StateRoute_PerformanceVisx_BarGraph.html
new file mode 100644
index 000000000..070786338
--- /dev/null
+++ b/docs/modules/app_components_StateRoute_PerformanceVisx_BarGraph.html
@@ -0,0 +1,2 @@
+app/components/StateRoute/PerformanceVisx/BarGraph | reactime
\ No newline at end of file
diff --git a/docs/modules/app_components_StateRoute_PerformanceVisx_BarGraphComparison.html b/docs/modules/app_components_StateRoute_PerformanceVisx_BarGraphComparison.html
new file mode 100644
index 000000000..bd5b54fc7
--- /dev/null
+++ b/docs/modules/app_components_StateRoute_PerformanceVisx_BarGraphComparison.html
@@ -0,0 +1,2 @@
+app/components/StateRoute/PerformanceVisx/BarGraphComparison | reactime
\ No newline at end of file
diff --git a/docs/modules/app_components_StateRoute_PerformanceVisx_BarGraphComparisonActions.html b/docs/modules/app_components_StateRoute_PerformanceVisx_BarGraphComparisonActions.html
new file mode 100644
index 000000000..ab8c74622
--- /dev/null
+++ b/docs/modules/app_components_StateRoute_PerformanceVisx_BarGraphComparisonActions.html
@@ -0,0 +1,2 @@
+app/components/StateRoute/PerformanceVisx/BarGraphComparisonActions | reactime
\ No newline at end of file
diff --git a/docs/modules/app_components_StateRoute_PerformanceVisx_PerformanceVisx.html b/docs/modules/app_components_StateRoute_PerformanceVisx_PerformanceVisx.html
new file mode 100644
index 000000000..6009860de
--- /dev/null
+++ b/docs/modules/app_components_StateRoute_PerformanceVisx_PerformanceVisx.html
@@ -0,0 +1,2 @@
+app/components/StateRoute/PerformanceVisx/PerformanceVisx | reactime
\ No newline at end of file
diff --git a/docs/modules/app_components_StateRoute_PerformanceVisx_RenderingFrequency.html b/docs/modules/app_components_StateRoute_PerformanceVisx_RenderingFrequency.html
new file mode 100644
index 000000000..8b74bbaca
--- /dev/null
+++ b/docs/modules/app_components_StateRoute_PerformanceVisx_RenderingFrequency.html
@@ -0,0 +1,2 @@
+app/components/StateRoute/PerformanceVisx/RenderingFrequency | reactime
\ No newline at end of file
diff --git a/docs/modules/app_components_StateRoute_StateRoute.html b/docs/modules/app_components_StateRoute_StateRoute.html
new file mode 100644
index 000000000..381f77925
--- /dev/null
+++ b/docs/modules/app_components_StateRoute_StateRoute.html
@@ -0,0 +1,2 @@
+app/components/StateRoute/StateRoute | reactime
\ No newline at end of file
diff --git a/docs/modules/app_components_StateRoute_Tree.html b/docs/modules/app_components_StateRoute_Tree.html
new file mode 100644
index 000000000..e2fe582d2
--- /dev/null
+++ b/docs/modules/app_components_StateRoute_Tree.html
@@ -0,0 +1,2 @@
+app/components/StateRoute/Tree | reactime
\ No newline at end of file
diff --git a/docs/modules/app_components_StateRoute_WebMetrics_WebMetrics.html b/docs/modules/app_components_StateRoute_WebMetrics_WebMetrics.html
new file mode 100644
index 000000000..e4ad4de94
--- /dev/null
+++ b/docs/modules/app_components_StateRoute_WebMetrics_WebMetrics.html
@@ -0,0 +1,2 @@
+app/components/StateRoute/WebMetrics/WebMetrics | reactime
\ No newline at end of file
diff --git a/docs/modules/app_components_StateRoute_WebMetrics_WebMetricsContainer.html b/docs/modules/app_components_StateRoute_WebMetrics_WebMetricsContainer.html
new file mode 100644
index 000000000..ee6a96d93
--- /dev/null
+++ b/docs/modules/app_components_StateRoute_WebMetrics_WebMetricsContainer.html
@@ -0,0 +1,2 @@
+app/components/StateRoute/WebMetrics/WebMetricsContainer | reactime
\ No newline at end of file
diff --git a/docs/modules/app_components_TimeTravel_Dropdown.html b/docs/modules/app_components_TimeTravel_Dropdown.html
new file mode 100644
index 000000000..d18446454
--- /dev/null
+++ b/docs/modules/app_components_TimeTravel_Dropdown.html
@@ -0,0 +1,2 @@
+app/components/TimeTravel/Dropdown | reactime
\ No newline at end of file
diff --git a/docs/modules/app_components_TimeTravel_MainSlider.html b/docs/modules/app_components_TimeTravel_MainSlider.html
new file mode 100644
index 000000000..b2116f394
--- /dev/null
+++ b/docs/modules/app_components_TimeTravel_MainSlider.html
@@ -0,0 +1,2 @@
+app/components/TimeTravel/MainSlider | reactime
\ No newline at end of file
diff --git a/docs/modules/app_containers_ActionContainer.html b/docs/modules/app_containers_ActionContainer.html
new file mode 100644
index 000000000..4818ee220
--- /dev/null
+++ b/docs/modules/app_containers_ActionContainer.html
@@ -0,0 +1,2 @@
+app/containers/ActionContainer | reactime
\ No newline at end of file
diff --git a/docs/modules/app_containers_ButtonsContainer.html b/docs/modules/app_containers_ButtonsContainer.html
new file mode 100644
index 000000000..8ef84e1cf
--- /dev/null
+++ b/docs/modules/app_containers_ButtonsContainer.html
@@ -0,0 +1,2 @@
+app/containers/ButtonsContainer | reactime
\ No newline at end of file
diff --git a/docs/modules/app_containers_ErrorContainer.html b/docs/modules/app_containers_ErrorContainer.html
new file mode 100644
index 000000000..ea2bb19d4
--- /dev/null
+++ b/docs/modules/app_containers_ErrorContainer.html
@@ -0,0 +1,2 @@
+app/containers/ErrorContainer | reactime
\ No newline at end of file
diff --git a/docs/modules/app_containers_MainContainer.html b/docs/modules/app_containers_MainContainer.html
new file mode 100644
index 000000000..df0a00627
--- /dev/null
+++ b/docs/modules/app_containers_MainContainer.html
@@ -0,0 +1,2 @@
+app/containers/MainContainer | reactime
\ No newline at end of file
diff --git a/docs/modules/app_containers_StateContainer.html b/docs/modules/app_containers_StateContainer.html
new file mode 100644
index 000000000..af05408ca
--- /dev/null
+++ b/docs/modules/app_containers_StateContainer.html
@@ -0,0 +1,2 @@
+app/containers/StateContainer | reactime
\ No newline at end of file
diff --git a/docs/modules/app_containers_TravelContainer.html b/docs/modules/app_containers_TravelContainer.html
new file mode 100644
index 000000000..a45d908e2
--- /dev/null
+++ b/docs/modules/app_containers_TravelContainer.html
@@ -0,0 +1,2 @@
+app/containers/TravelContainer | reactime
\ No newline at end of file
diff --git a/docs/modules/app_module._d3_.html b/docs/modules/app_module._d3_.html
new file mode 100644
index 000000000..2f25300c0
--- /dev/null
+++ b/docs/modules/app_module._d3_.html
@@ -0,0 +1 @@
+"d3" | reactime
\ No newline at end of file
diff --git a/docs/modules/app_module._html_react_parser_.html b/docs/modules/app_module._html_react_parser_.html
new file mode 100644
index 000000000..e66127b7a
--- /dev/null
+++ b/docs/modules/app_module._html_react_parser_.html
@@ -0,0 +1 @@
+"html-react-parser" | reactime
\ No newline at end of file
diff --git a/docs/modules/app_module._immer_.html b/docs/modules/app_module._immer_.html
new file mode 100644
index 000000000..82ba0d231
--- /dev/null
+++ b/docs/modules/app_module._immer_.html
@@ -0,0 +1 @@
+"immer" | reactime
\ No newline at end of file
diff --git a/docs/modules/app_module._jsondiffpatch_.html b/docs/modules/app_module._jsondiffpatch_.html
new file mode 100644
index 000000000..92a96ff61
--- /dev/null
+++ b/docs/modules/app_module._jsondiffpatch_.html
@@ -0,0 +1 @@
+"jsondiffpatch" | reactime
\ No newline at end of file
diff --git a/docs/modules/app_module._rc_slider_.html b/docs/modules/app_module._rc_slider_.html
new file mode 100644
index 000000000..df45c28c2
--- /dev/null
+++ b/docs/modules/app_module._rc_slider_.html
@@ -0,0 +1 @@
+"rc-slider" | reactime
\ No newline at end of file
diff --git a/docs/modules/app_module._rc_tooltip_.html b/docs/modules/app_module._rc_tooltip_.html
new file mode 100644
index 000000000..ea6adf11a
--- /dev/null
+++ b/docs/modules/app_module._rc_tooltip_.html
@@ -0,0 +1 @@
+"rc-tooltip" | reactime
\ No newline at end of file
diff --git a/docs/modules/app_module._react_.html b/docs/modules/app_module._react_.html
new file mode 100644
index 000000000..6527aa8a1
--- /dev/null
+++ b/docs/modules/app_module._react_.html
@@ -0,0 +1 @@
+"react" | reactime
\ No newline at end of file
diff --git a/docs/modules/app_module._react_apexcharts_.html b/docs/modules/app_module._react_apexcharts_.html
new file mode 100644
index 000000000..fa7c41a49
--- /dev/null
+++ b/docs/modules/app_module._react_apexcharts_.html
@@ -0,0 +1 @@
+"react-apexcharts" | reactime
\ No newline at end of file
diff --git a/docs/modules/app_module._react_dom_.html b/docs/modules/app_module._react_dom_.html
new file mode 100644
index 000000000..e69673b4d
--- /dev/null
+++ b/docs/modules/app_module._react_dom_.html
@@ -0,0 +1 @@
+"react-dom" | reactime
\ No newline at end of file
diff --git a/docs/modules/app_module._react_hover_.html b/docs/modules/app_module._react_hover_.html
new file mode 100644
index 000000000..587e58a1b
--- /dev/null
+++ b/docs/modules/app_module._react_hover_.html
@@ -0,0 +1 @@
+"react-hover" | reactime
\ No newline at end of file
diff --git a/docs/modules/app_module._react_json_tree_.html b/docs/modules/app_module._react_json_tree_.html
new file mode 100644
index 000000000..8b3e3a7c3
--- /dev/null
+++ b/docs/modules/app_module._react_json_tree_.html
@@ -0,0 +1 @@
+"react-json-tree" | reactime
\ No newline at end of file
diff --git a/docs/modules/app_module._react_router_dom_.html b/docs/modules/app_module._react_router_dom_.html
new file mode 100644
index 000000000..311efe2a8
--- /dev/null
+++ b/docs/modules/app_module._react_router_dom_.html
@@ -0,0 +1 @@
+"react-router-dom" | reactime
\ No newline at end of file
diff --git a/docs/modules/app_module._react_select_.html b/docs/modules/app_module._react_select_.html
new file mode 100644
index 000000000..fe580f204
--- /dev/null
+++ b/docs/modules/app_module._react_select_.html
@@ -0,0 +1 @@
+"react-select" | reactime
\ No newline at end of file
diff --git a/docs/modules/app_module._react_spinners_.html b/docs/modules/app_module._react_spinners_.html
new file mode 100644
index 000000000..47a975031
--- /dev/null
+++ b/docs/modules/app_module._react_spinners_.html
@@ -0,0 +1 @@
+"react-spinners" | reactime
\ No newline at end of file
diff --git a/docs/modules/app_module.html b/docs/modules/app_module.html
new file mode 100644
index 000000000..88b7ed1fc
--- /dev/null
+++ b/docs/modules/app_module.html
@@ -0,0 +1,15 @@
+app/module | reactime
\ No newline at end of file
diff --git a/docs/modules/app_slices_mainSlice.html b/docs/modules/app_slices_mainSlice.html
new file mode 100644
index 000000000..5a4af5744
--- /dev/null
+++ b/docs/modules/app_slices_mainSlice.html
@@ -0,0 +1,32 @@
+app/slices/mainSlice | reactime
\ No newline at end of file
diff --git a/docs/modules/app_store.html b/docs/modules/app_store.html
new file mode 100644
index 000000000..e151789ec
--- /dev/null
+++ b/docs/modules/app_store.html
@@ -0,0 +1,2 @@
+app/store | reactime
\ No newline at end of file
diff --git a/docs/modules/app_styles_theme.html b/docs/modules/app_styles_theme.html
new file mode 100644
index 000000000..2c470e941
--- /dev/null
+++ b/docs/modules/app_styles_theme.html
@@ -0,0 +1,2 @@
+app/styles/theme | reactime
\ No newline at end of file
diff --git a/docs/modules/backend.html b/docs/modules/backend.html
new file mode 100644
index 000000000..903c8d062
--- /dev/null
+++ b/docs/modules/backend.html
@@ -0,0 +1 @@
+backend | reactime
\ No newline at end of file
diff --git a/docs/modules/backend_controllers_createComponentActionsRecord.html b/docs/modules/backend_controllers_createComponentActionsRecord.html
new file mode 100644
index 000000000..0b2e39e58
--- /dev/null
+++ b/docs/modules/backend_controllers_createComponentActionsRecord.html
@@ -0,0 +1,2 @@
+backend/controllers/createComponentActionsRecord | reactime
\ No newline at end of file
diff --git a/docs/modules/backend_controllers_createTree.html b/docs/modules/backend_controllers_createTree.html
new file mode 100644
index 000000000..96b44085b
--- /dev/null
+++ b/docs/modules/backend_controllers_createTree.html
@@ -0,0 +1,2 @@
+backend/controllers/createTree | reactime
\ No newline at end of file
diff --git a/docs/modules/backend_controllers_statePropExtractors.html b/docs/modules/backend_controllers_statePropExtractors.html
new file mode 100644
index 000000000..492a5a371
--- /dev/null
+++ b/docs/modules/backend_controllers_statePropExtractors.html
@@ -0,0 +1,4 @@
+backend/controllers/statePropExtractors | reactime
\ No newline at end of file
diff --git a/docs/modules/backend_controllers_throttle.html b/docs/modules/backend_controllers_throttle.html
new file mode 100644
index 000000000..cbc672419
--- /dev/null
+++ b/docs/modules/backend_controllers_throttle.html
@@ -0,0 +1,2 @@
+backend/controllers/throttle | reactime
\ No newline at end of file
diff --git a/docs/modules/backend_controllers_timeJump.html b/docs/modules/backend_controllers_timeJump.html
new file mode 100644
index 000000000..f5b0f0739
--- /dev/null
+++ b/docs/modules/backend_controllers_timeJump.html
@@ -0,0 +1,2 @@
+backend/controllers/timeJump | reactime
\ No newline at end of file
diff --git a/docs/modules/backend_models_filterConditions.html b/docs/modules/backend_models_filterConditions.html
new file mode 100644
index 000000000..14b4f7f78
--- /dev/null
+++ b/docs/modules/backend_models_filterConditions.html
@@ -0,0 +1,5 @@
+backend/models/filterConditions | reactime
\ No newline at end of file
diff --git a/docs/modules/backend_models_masterState.html b/docs/modules/backend_models_masterState.html
new file mode 100644
index 000000000..242f5f942
--- /dev/null
+++ b/docs/modules/backend_models_masterState.html
@@ -0,0 +1,2 @@
+backend/models/masterState | reactime
\ No newline at end of file
diff --git a/docs/modules/backend_models_routes.html b/docs/modules/backend_models_routes.html
new file mode 100644
index 000000000..7e257dc5d
--- /dev/null
+++ b/docs/modules/backend_models_routes.html
@@ -0,0 +1,4 @@
+backend/models/routes | reactime
\ No newline at end of file
diff --git a/docs/modules/backend_models_tree.html b/docs/modules/backend_models_tree.html
new file mode 100644
index 000000000..4ad225959
--- /dev/null
+++ b/docs/modules/backend_models_tree.html
@@ -0,0 +1,3 @@
+backend/models/tree | reactime
\ No newline at end of file
diff --git a/docs/modules/backend_module._core_js_.html b/docs/modules/backend_module._core_js_.html
new file mode 100644
index 000000000..d0d884083
--- /dev/null
+++ b/docs/modules/backend_module._core_js_.html
@@ -0,0 +1 @@
+"core-js" | reactime
\ No newline at end of file
diff --git a/docs/modules/backend_module._regenerator_runtime_runtime_.html b/docs/modules/backend_module._regenerator_runtime_runtime_.html
new file mode 100644
index 000000000..c07a02a5a
--- /dev/null
+++ b/docs/modules/backend_module._regenerator_runtime_runtime_.html
@@ -0,0 +1 @@
+"regenerator-runtime/runtime" | reactime
\ No newline at end of file
diff --git a/docs/modules/backend_module.html b/docs/modules/backend_module.html
new file mode 100644
index 000000000..79d4d600e
--- /dev/null
+++ b/docs/modules/backend_module.html
@@ -0,0 +1,3 @@
+backend/module | reactime
\ No newline at end of file
diff --git a/docs/modules/backend_puppeteerServer.html b/docs/modules/backend_puppeteerServer.html
new file mode 100644
index 000000000..61775fc73
--- /dev/null
+++ b/docs/modules/backend_puppeteerServer.html
@@ -0,0 +1 @@
+backend/puppeteerServer | reactime
\ No newline at end of file
diff --git a/docs/modules/backend_routers_linkFiber.html b/docs/modules/backend_routers_linkFiber.html
new file mode 100644
index 000000000..595f41014
--- /dev/null
+++ b/docs/modules/backend_routers_linkFiber.html
@@ -0,0 +1,2 @@
+backend/routers/linkFiber | reactime
\ No newline at end of file
diff --git a/docs/modules/backend_routers_snapShot.html b/docs/modules/backend_routers_snapShot.html
new file mode 100644
index 000000000..4ca11f7eb
--- /dev/null
+++ b/docs/modules/backend_routers_snapShot.html
@@ -0,0 +1,2 @@
+backend/routers/snapShot | reactime
\ No newline at end of file
diff --git a/docs/modules/backend_types_backendTypes.html b/docs/modules/backend_types_backendTypes.html
new file mode 100644
index 000000000..f21fe44ff
--- /dev/null
+++ b/docs/modules/backend_types_backendTypes.html
@@ -0,0 +1,34 @@
+backend/types/backendTypes | reactime
\ No newline at end of file
diff --git a/docs/modules/backend_types_linkFiberTypes.html b/docs/modules/backend_types_linkFiberTypes.html
new file mode 100644
index 000000000..921ea854a
--- /dev/null
+++ b/docs/modules/backend_types_linkFiberTypes.html
@@ -0,0 +1,2 @@
+backend/types/linkFiberTypes | reactime
\ No newline at end of file
diff --git a/docs/modules/extension_background.html b/docs/modules/extension_background.html
new file mode 100644
index 000000000..6b827201f
--- /dev/null
+++ b/docs/modules/extension_background.html
@@ -0,0 +1 @@
+extension/background | reactime
\ No newline at end of file
diff --git a/docs/modules/extension_build_devtools.html b/docs/modules/extension_build_devtools.html
new file mode 100644
index 000000000..c1d948952
--- /dev/null
+++ b/docs/modules/extension_build_devtools.html
@@ -0,0 +1 @@
+extension/build/devtools | reactime
\ No newline at end of file
diff --git a/docs/modules/extension_contentScript.html b/docs/modules/extension_contentScript.html
new file mode 100644
index 000000000..b947372e7
--- /dev/null
+++ b/docs/modules/extension_contentScript.html
@@ -0,0 +1 @@
+extension/contentScript | reactime
\ No newline at end of file
diff --git a/docs/types/backend_types_backendTypes.Fiber.html b/docs/types/backend_types_backendTypes.Fiber.html
new file mode 100644
index 000000000..f228a8f27
--- /dev/null
+++ b/docs/types/backend_types_backendTypes.Fiber.html
@@ -0,0 +1,34 @@
+Fiber | reactime
The type of the current Fiber node, such as FunctionComponent, ClassComponent, or HostComponent (for DOM elements).
+
OptionaltreeBaseDuration?: number
Sum of base times for all descendants of this Fiber. This value bubbles up during the "complete" phase.
+
This field is only set when the enableProfilerTimer flag is enabled.
+
Member
actualDuration - The time taken to render the current Fiber node and its descendants during the previous render cycle. This value is used to optimize the rendering of components and to provide performance metrics to developers.
+
Member
actualStartTime - The time at which the rendering of the current Fiber node started during the previous render cycle.
+
Member
child - Pointer to the first child.
+
Member
elementType - The type of the current Fiber node's element (e.g. the component function or class, or the DOM element type). For class/functional component, elmementType stores the function definition.
+
Member
key - The key a user assigned to the component or null if they didn't assign one
+
Member
memoizedProps - The current props of the component associated with the current Fiber node.
+
Member
memoizedState - The current state of the component associated with the current Fiber node.
+
Member
selfBaseDuration - The base duration of the current Fiber node's render phase (excluding the time taken to render its children). This field is only set when the enableProfilerTimer flag is enabled.
+
Member
sibling - Pointer to next sibling
+
Member
stateNode - The local state associated with this fiber. For classComponent, stateNode contains current state and the bound update methods of the component
+
Member
tag - The type of the current Fiber node, such as FunctionComponent, ClassComponent, or HostComponent (for DOM elements).
+
Member
treeBaseDuration - The total base duration of the current Fiber node's subtree. This field is only set when the enableProfilerTimer flag is enabled.
+
Member
_debugHookTypes - An array of hooks used for debugging purposes.
\ No newline at end of file
diff --git a/docs/types/backend_types_backendTypes.FiberRoot.html b/docs/types/backend_types_backendTypes.FiberRoot.html
new file mode 100644
index 000000000..18fedcc49
--- /dev/null
+++ b/docs/types/backend_types_backendTypes.FiberRoot.html
@@ -0,0 +1 @@
+FiberRoot | reactime
\ No newline at end of file
diff --git a/docs/types/backend_types_backendTypes.WorkTag.html b/docs/types/backend_types_backendTypes.WorkTag.html
new file mode 100644
index 000000000..b6e08c77c
--- /dev/null
+++ b/docs/types/backend_types_backendTypes.WorkTag.html
@@ -0,0 +1 @@
+WorkTag | reactime
\ No newline at end of file
diff --git a/docs/variables/app_slices_mainSlice.mainSlice.html b/docs/variables/app_slices_mainSlice.mainSlice.html
new file mode 100644
index 000000000..e98fd4939
--- /dev/null
+++ b/docs/variables/app_slices_mainSlice.mainSlice.html
@@ -0,0 +1 @@
+mainSlice | reactime
\ No newline at end of file
diff --git a/docs/variables/app_store.store.html b/docs/variables/app_store.store.html
new file mode 100644
index 000000000..f7ee3bc9d
--- /dev/null
+++ b/docs/variables/app_store.store.html
@@ -0,0 +1 @@
+store | reactime
\ No newline at end of file
diff --git a/docs/variables/app_styles_theme.default.html b/docs/variables/app_styles_theme.default.html
new file mode 100644
index 000000000..1365ffb93
--- /dev/null
+++ b/docs/variables/app_styles_theme.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_models_filterConditions.allowedComponentTypes.html b/docs/variables/backend_models_filterConditions.allowedComponentTypes.html
new file mode 100644
index 000000000..048523ab7
--- /dev/null
+++ b/docs/variables/backend_models_filterConditions.allowedComponentTypes.html
@@ -0,0 +1 @@
+allowedComponentTypes | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_models_filterConditions.exclude.html b/docs/variables/backend_models_filterConditions.exclude.html
new file mode 100644
index 000000000..37d367986
--- /dev/null
+++ b/docs/variables/backend_models_filterConditions.exclude.html
@@ -0,0 +1,2 @@
+exclude | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_models_filterConditions.nextJSDefaultComponent.html b/docs/variables/backend_models_filterConditions.nextJSDefaultComponent.html
new file mode 100644
index 000000000..a78a61c15
--- /dev/null
+++ b/docs/variables/backend_models_filterConditions.nextJSDefaultComponent.html
@@ -0,0 +1 @@
+nextJSDefaultComponent | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_models_filterConditions.remixDefaultComponents.html b/docs/variables/backend_models_filterConditions.remixDefaultComponents.html
new file mode 100644
index 000000000..cf357fa1f
--- /dev/null
+++ b/docs/variables/backend_models_filterConditions.remixDefaultComponents.html
@@ -0,0 +1 @@
+remixDefaultComponents | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_models_masterState.default.html b/docs/variables/backend_models_masterState.default.html
new file mode 100644
index 000000000..3b6757df9
--- /dev/null
+++ b/docs/variables/backend_models_masterState.default.html
@@ -0,0 +1,41 @@
+default | reactime
getAllComponents - This method is used for debugging purpose to access the array of setState/dispatch methods
+
Returns
+
an array of objects containing the bound methods for updating state
+
+
(): any[]
Returns any[]
+
an array of objects containing the bound methods for updating state
+
+
Function
getAllComponents - This method is used for debugging purpose to access the array of setState/dispatch methods
+
getComponentByIndex: ((inputIndex) => any)
Function
getComponentByIndex - This function is used for stateful Class Component to retrieve an object that has the bound setState method
+
Param: inputIndex
index of component inside componentActionsRecord coming from timeJump.ts
+
Returns
+
an object containing the bound setState method
+
+
(inputIndex): any
Parameters
inputIndex: number
index of component inside componentActionsRecord coming from timeJump.ts
+
Returns any
+
an object containing the bound setState method
+
+
Function
getComponentByIndex - This function is used for stateful Class Component to retrieve an object that has the bound setState method
+
getComponentByIndexHooks: ((inputIndex) => any[])
Function
getComponentByIndexHooks - This function is used for Functional Component to retrieve an array of objects that have the bound dispatch methods.
+
Param: inputIndex
index of component inside componentActionsRecord coming from timeJump.ts
+
Returns
+
an array of objects containing the bound dispatch methods
+
+
(inputIndex): any[]
Parameters
inputIndex: number[]
index of component inside componentActionsRecord coming from timeJump.ts
+
Returns any[]
+
an array of objects containing the bound dispatch methods
+
+
Function
getComponentByIndexHooks - This function is used for Functional Component to retrieve an array of objects that have the bound dispatch methods.
+
saveNew: ((component) => number)
Function
saveNew - Adds a new component to the componentActionsRecord array and returns its index.
+
Param: component
An object that contains bound update method. For class component, the udpate method is setState. For functional component, the update method is dispatch.
+
Returns
+
the index of the newly added component
+
+
(component): number
Parameters
component: any
An object that contains bound update method. For class component, the udpate method is setState. For functional component, the update method is dispatch.
+
Returns number
+
the index of the newly added component
+
+
Function
saveNew - Adds a new component to the componentActionsRecord array and returns its index.
\ No newline at end of file
diff --git a/docs/variables/backend_models_routes.default.html b/docs/variables/backend_models_routes.default.html
new file mode 100644
index 000000000..b64fa9dd9
--- /dev/null
+++ b/docs/variables/backend_models_routes.default.html
@@ -0,0 +1 @@
+default | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_types_backendTypes.Block.html b/docs/variables/backend_types_backendTypes.Block.html
new file mode 100644
index 000000000..6563ff08c
--- /dev/null
+++ b/docs/variables/backend_types_backendTypes.Block.html
@@ -0,0 +1 @@
+Block | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_types_backendTypes.ClassComponent.html b/docs/variables/backend_types_backendTypes.ClassComponent.html
new file mode 100644
index 000000000..fc8c57d44
--- /dev/null
+++ b/docs/variables/backend_types_backendTypes.ClassComponent.html
@@ -0,0 +1 @@
+ClassComponent | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_types_backendTypes.ContextConsumer.html b/docs/variables/backend_types_backendTypes.ContextConsumer.html
new file mode 100644
index 000000000..413188522
--- /dev/null
+++ b/docs/variables/backend_types_backendTypes.ContextConsumer.html
@@ -0,0 +1 @@
+ContextConsumer | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_types_backendTypes.ContextProvider.html b/docs/variables/backend_types_backendTypes.ContextProvider.html
new file mode 100644
index 000000000..e0060fecb
--- /dev/null
+++ b/docs/variables/backend_types_backendTypes.ContextProvider.html
@@ -0,0 +1 @@
+ContextProvider | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_types_backendTypes.DehydratedFragment.html b/docs/variables/backend_types_backendTypes.DehydratedFragment.html
new file mode 100644
index 000000000..9bbfdfb32
--- /dev/null
+++ b/docs/variables/backend_types_backendTypes.DehydratedFragment.html
@@ -0,0 +1 @@
+DehydratedFragment | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_types_backendTypes.ForwardRef.html b/docs/variables/backend_types_backendTypes.ForwardRef.html
new file mode 100644
index 000000000..edc12d560
--- /dev/null
+++ b/docs/variables/backend_types_backendTypes.ForwardRef.html
@@ -0,0 +1 @@
+ForwardRef | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_types_backendTypes.Fragment.html b/docs/variables/backend_types_backendTypes.Fragment.html
new file mode 100644
index 000000000..1f56e44cf
--- /dev/null
+++ b/docs/variables/backend_types_backendTypes.Fragment.html
@@ -0,0 +1 @@
+Fragment | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_types_backendTypes.FunctionComponent.html b/docs/variables/backend_types_backendTypes.FunctionComponent.html
new file mode 100644
index 000000000..e3e86a9fe
--- /dev/null
+++ b/docs/variables/backend_types_backendTypes.FunctionComponent.html
@@ -0,0 +1 @@
+FunctionComponent | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_types_backendTypes.FundamentalComponent.html b/docs/variables/backend_types_backendTypes.FundamentalComponent.html
new file mode 100644
index 000000000..0002aaf5a
--- /dev/null
+++ b/docs/variables/backend_types_backendTypes.FundamentalComponent.html
@@ -0,0 +1 @@
+FundamentalComponent | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_types_backendTypes.HostComponent.html b/docs/variables/backend_types_backendTypes.HostComponent.html
new file mode 100644
index 000000000..a1ba66613
--- /dev/null
+++ b/docs/variables/backend_types_backendTypes.HostComponent.html
@@ -0,0 +1,2 @@
+HostComponent | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_types_backendTypes.HostPortal.html b/docs/variables/backend_types_backendTypes.HostPortal.html
new file mode 100644
index 000000000..546e856b5
--- /dev/null
+++ b/docs/variables/backend_types_backendTypes.HostPortal.html
@@ -0,0 +1,2 @@
+HostPortal | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_types_backendTypes.HostRoot.html b/docs/variables/backend_types_backendTypes.HostRoot.html
new file mode 100644
index 000000000..e1624929b
--- /dev/null
+++ b/docs/variables/backend_types_backendTypes.HostRoot.html
@@ -0,0 +1,2 @@
+HostRoot | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_types_backendTypes.HostText.html b/docs/variables/backend_types_backendTypes.HostText.html
new file mode 100644
index 000000000..ea86e9087
--- /dev/null
+++ b/docs/variables/backend_types_backendTypes.HostText.html
@@ -0,0 +1 @@
+HostText | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_types_backendTypes.IncompleteClassComponent.html b/docs/variables/backend_types_backendTypes.IncompleteClassComponent.html
new file mode 100644
index 000000000..ff787bc76
--- /dev/null
+++ b/docs/variables/backend_types_backendTypes.IncompleteClassComponent.html
@@ -0,0 +1 @@
+IncompleteClassComponent | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_types_backendTypes.IndeterminateComponent.html b/docs/variables/backend_types_backendTypes.IndeterminateComponent.html
new file mode 100644
index 000000000..aba08e09a
--- /dev/null
+++ b/docs/variables/backend_types_backendTypes.IndeterminateComponent.html
@@ -0,0 +1,2 @@
+IndeterminateComponent | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_types_backendTypes.LazyComponent.html b/docs/variables/backend_types_backendTypes.LazyComponent.html
new file mode 100644
index 000000000..0410dd8d2
--- /dev/null
+++ b/docs/variables/backend_types_backendTypes.LazyComponent.html
@@ -0,0 +1 @@
+LazyComponent | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_types_backendTypes.LegacyHiddenComponent.html b/docs/variables/backend_types_backendTypes.LegacyHiddenComponent.html
new file mode 100644
index 000000000..b7f0e5d84
--- /dev/null
+++ b/docs/variables/backend_types_backendTypes.LegacyHiddenComponent.html
@@ -0,0 +1 @@
+LegacyHiddenComponent | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_types_backendTypes.MemoComponent.html b/docs/variables/backend_types_backendTypes.MemoComponent.html
new file mode 100644
index 000000000..0d59a6a98
--- /dev/null
+++ b/docs/variables/backend_types_backendTypes.MemoComponent.html
@@ -0,0 +1 @@
+MemoComponent | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_types_backendTypes.Mode.html b/docs/variables/backend_types_backendTypes.Mode.html
new file mode 100644
index 000000000..1fc0db3a7
--- /dev/null
+++ b/docs/variables/backend_types_backendTypes.Mode.html
@@ -0,0 +1 @@
+Mode | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_types_backendTypes.OffscreenComponent.html b/docs/variables/backend_types_backendTypes.OffscreenComponent.html
new file mode 100644
index 000000000..67d567d96
--- /dev/null
+++ b/docs/variables/backend_types_backendTypes.OffscreenComponent.html
@@ -0,0 +1 @@
+OffscreenComponent | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_types_backendTypes.Profiler.html b/docs/variables/backend_types_backendTypes.Profiler.html
new file mode 100644
index 000000000..b6c15852f
--- /dev/null
+++ b/docs/variables/backend_types_backendTypes.Profiler.html
@@ -0,0 +1 @@
+Profiler | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_types_backendTypes.ScopeComponent.html b/docs/variables/backend_types_backendTypes.ScopeComponent.html
new file mode 100644
index 000000000..51f9e7c72
--- /dev/null
+++ b/docs/variables/backend_types_backendTypes.ScopeComponent.html
@@ -0,0 +1 @@
+ScopeComponent | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_types_backendTypes.SimpleMemoComponent.html b/docs/variables/backend_types_backendTypes.SimpleMemoComponent.html
new file mode 100644
index 000000000..83ca47489
--- /dev/null
+++ b/docs/variables/backend_types_backendTypes.SimpleMemoComponent.html
@@ -0,0 +1 @@
+SimpleMemoComponent | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_types_backendTypes.SuspenseComponent.html b/docs/variables/backend_types_backendTypes.SuspenseComponent.html
new file mode 100644
index 000000000..e643681e9
--- /dev/null
+++ b/docs/variables/backend_types_backendTypes.SuspenseComponent.html
@@ -0,0 +1 @@
+SuspenseComponent | reactime
\ No newline at end of file
diff --git a/docs/variables/backend_types_backendTypes.SuspenseListComponent.html b/docs/variables/backend_types_backendTypes.SuspenseListComponent.html
new file mode 100644
index 000000000..84ba032f9
--- /dev/null
+++ b/docs/variables/backend_types_backendTypes.SuspenseListComponent.html
@@ -0,0 +1 @@
+SuspenseListComponent | reactime
\ No newline at end of file
diff --git a/jest.config.js b/jest.config.js
index 3b713ba93..d7a454f7b 100644
--- a/jest.config.js
+++ b/jest.config.js
@@ -6,8 +6,19 @@ module.exports = {
transform: {
'^.+\\.(js|ts|tsx)$': 'ts-jest',
},
- testPathIgnorePatterns: ['www', './src/backend/__tests__/ignore', './src/app/__tests__enzyme/ignore', './src/backend/__tests__/linkFiber.test.ts', './src/app/slices/mainSlice.ts'],
- coveragePathIgnorePatterns: ['/src/backend/__tests__/ignore/', '/src/app/__tests__enzyme/ignore', './src/backend/__tests__/linkFiber.test.ts', './src/app/slices/mainSlice.ts'],
+ testPathIgnorePatterns: [
+ 'www',
+ './src/backend/__tests__/ignore',
+ './src/app/__tests__enzyme/ignore',
+ './src/backend/__tests__/linkFiber.test.ts',
+ './src/app/slices/mainSlice.ts',
+ ],
+ coveragePathIgnorePatterns: [
+ '/src/backend/__tests__/ignore/',
+ '/src/app/__tests__enzyme/ignore',
+ './src/backend/__tests__/linkFiber.test.ts',
+ './src/app/slices/mainSlice.ts',
+ ],
transformIgnorePatterns: ['/node_modules/(?!d3|d3-array|internmap|delaunator|robust-predicates)'],
testRegex: '(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$',
moduleFileExtensions: ['ts', 'tsx', 'js'],
diff --git a/package.json b/package.json
index a0ac8db01..137db6e05 100644
--- a/package.json
+++ b/package.json
@@ -2,16 +2,16 @@
"name": "reactime",
"description": "build web extension bundle.js",
"scripts": {
- "build": "NODE_OPTIONS=--openssl-legacy-provider webpack --mode production",
- "dev": "NODE_OPTIONS=--openssl-legacy-provider webpack --mode development --watch",
- "buildlegacy": "webpack --mode production",
- "devlegacy": "webpack --mode development --watch",
+ "build": "webpack --mode production",
+ "dev": "cross-env NODE_ENV=development webpack --mode development --watch",
+ "buildlegacy": "NODE_OPTIONS=--openssl-legacy-provider webpack --mode production",
+ "devlegacy": "NODE_OPTIONS=--openssl-legacy-provider webpack --mode development --watch",
"test": "jest --verbose --coverage",
"test-backend": "jest --verbose --coverage src/backend",
"test-frontend": "jest --verbose --coverage src/app",
"test-on": "./node_modules/.bin/jest $1",
"docker-test-lint": "eslint --ext .js --ext .jsx src",
- "docs": "typedoc --json docs --inputFiles src/app --inputFiles src/backend --readme docs/readme.md",
+ "docs": "typedoc",
"format": "prettier --config .prettierrc './**/*.{ts,tsx,js,jsx}' --write"
},
"keywords": [
@@ -55,6 +55,7 @@
"David Bernstein",
"David Chai",
"David Kim",
+ "David Moore",
"Dennis Lopez",
"Edar Liu",
"Edwin Menendez",
@@ -73,7 +74,9 @@
"James Nghiem",
"Jasmine Noor",
"Jason Victor",
+ "Jesse Rosengrant",
"Jimmy Phy",
+ "John Banks",
"Joseph Park",
"Joseph Stern",
"Josh Kim",
@@ -87,6 +90,7 @@
"Kristina Wallen",
"Kyle Bell",
"Lance Ziegler",
+ "Liam Donaher",
"Lina Shin",
"Mark Teets",
"Mike Bednarz",
@@ -119,131 +123,77 @@
],
"license": "ISC",
"devDependencies": {
- "@babel/plugin-proposal-class-properties": "^7.10.4",
- "@babel/plugin-proposal-decorators": "^7.10.5",
- "@babel/preset-env": "^7.12.7",
- "@babel/preset-react": "^7.12.7",
- "@babel/preset-typescript": "^7.21.5",
- "@inrupt/jest-jsdom-polyfills": "^1.6.2",
- "@testing-library/jest-dom": "^4.2.4",
- "@testing-library/react": "^13.4.0",
- "@testing-library/user-event": "^14.4.3",
- "@types/chai": "^4.2.14",
- "@types/chrome": "^0.0.119",
- "@types/d3": "^7.4.0",
- "@types/d3-scale-chromatic": "^2.0.0",
- "@types/jest": "^29.5.0",
- "@types/lodash.isequal": "^4.5.5",
- "@types/node": "^12.19.6",
- "@types/react": "^17.0.43",
- "@types/react-router": "^5.1.20",
- "@typescript-eslint/eslint-plugin": "^3.6.1",
- "@typescript-eslint/parser": "^3.6.1",
- "babel-loader": "^8.1.0",
- "babel-preset-airbnb": "^5.0.0",
- "core-js": "^3.6.5",
- "css-loader": "^3.6.0",
- "enzyme": "^3.11.0",
- "enzyme-adapter-react-16": "^1.15.6",
- "eslint": "^8.36.0",
- "eslint-config-airbnb": "^18.2.0",
- "eslint-plugin-import": "^2.22.0",
- "eslint-plugin-jest": "^22.21.0",
- "eslint-plugin-jest-dom": "^4.0.3",
- "eslint-plugin-jsx-a11y": "^6.3.1",
- "eslint-plugin-react": "^7.20.3",
- "eslint-plugin-react-hooks": "^1.7.0",
- "eslint-plugin-testing-library": "^5.10.3",
- "express": "^4.17.1",
- "jest": "^29.5.0",
- "jest-cli": "^26.1.0",
- "jest-diff": "^26.1.0",
- "jest-environment-jsdom": "^29.5.0",
- "jest-runner-eslint": "^2.0.0",
- "jscharting-react": "^1.2.1",
- "jsdom": "^21.1.2",
- "prettier": "2.8.4",
- "puppeteer": "^14.3.0",
- "react-devtools-core": "^4.27.3",
- "sass": "^1.26.10",
- "sass-loader": "^7.3.1",
- "sinon-chrome": "^3.0.1",
- "style-loader": "^0.23.1",
- "ts-jest": "^29.0.5",
- "ts-loader": "^8.0.0",
- "ts-node": "^9.1.1",
- "typedoc": "^0.5.0",
- "typedoc-webpack-plugin": "^1.1.4",
- "typescript": "^4.9.0",
- "webpack": "^4.43.0",
- "webpack-chrome-extension-reloader": "^1.3.0",
- "webpack-cli": "^3.3.12"
+ "@testing-library/jest-dom": "^6.1.5",
+ "@testing-library/react": "^14.1.2",
+ "@testing-library/user-event": "^14.5.1",
+ "@types/chrome": "^0.0.254",
+ "@types/jest": "^29.5.11",
+ "@types/node": "^20.10.5",
+ "@typescript-eslint/eslint-plugin": "^6.15.0",
+ "copy-webpack-plugin": "^11.0.0",
+ "css-loader": "^6.8.1",
+ "eslint-plugin-jest": "^27.6.0",
+ "eslint-plugin-jest-dom": "^5.1.0",
+ "eslint-plugin-react": "^7.33.2",
+ "eslint-plugin-react-hooks": "^4.6.0",
+ "eslint-plugin-testing-library": "^6.2.0",
+ "html-webpack-plugin": "^5.5.4",
+ "identity-obj-proxy": "^3.0.0",
+ "jsdom": "^23.0.1",
+ "react-dom": "^18.2.0",
+ "react-router-dom": "^6.21.1",
+ "sass-loader": "^13.3.2",
+ "style-loader": "^3.3.3",
+ "ts-loader": "^9.5.1",
+ "typedoc": "^0.25.4",
+ "typescript": "^5.3.3",
+ "webpack": "^5.89.0",
+ "webpack-cli": "^5.1.4"
},
"dependencies": {
"@emotion/react": "^11.11.1",
"@emotion/styled": "^11.11.0",
- "@fortawesome/fontawesome-free": "^5.15.1",
- "@fortawesome/fontawesome-svg-core": "^1.2.32",
- "@fortawesome/free-regular-svg-icons": "^5.15.1",
- "@fortawesome/free-solid-svg-icons": "^5.15.1",
- "@fortawesome/react-fontawesome": "^0.1.12",
- "@mui/icons-material": "^5.14.1",
- "@mui/material": "^5.14.12",
- "@mui/styled-engine-sc": "^5.12.0",
- "@mui/system": "^5.14.12",
- "@reduxjs/toolkit": "^1.9.6",
- "@types/react-dom": "^17.0.14",
- "@types/react-router-dom": "^5.3.3",
- "@visx/axis": "^1.0.0",
- "@visx/brush": "^1.2.0",
- "@visx/clip-path": "^1.0.0",
- "@visx/event": "^1.0.0",
- "@visx/glyph": "^1.0.0",
- "@visx/gradient": "^1.0.0",
- "@visx/grid": "^1.0.0",
- "@visx/group": "^3.0.0",
- "@visx/hierarchy": "^1.0.0",
- "@visx/legend": "^1.0.0",
- "@visx/responsive": "^1.0.0",
- "@visx/scale": "^1.0.0",
- "@visx/shape": "^3.0.0",
- "@visx/text": "^3.0.0",
- "@visx/tooltip": "^1.0.0",
- "@visx/zoom": "^1.0.0",
- "acorn": "^7.3.1",
- "acorn-jsx": "^5.2.0",
- "apexcharts": "^3.23.1",
- "chai": "^4.2.0",
- "d3": "^7.6.1",
+ "@mui/icons-material": "^5.15.1",
+ "@mui/material": "^5.15.1",
+ "@mui/system": "^5.15.1",
+ "@reduxjs/toolkit": "^2.0.1",
+ "@visx/axis": "^3.5.0",
+ "@visx/event": "^3.3.0",
+ "@visx/gradient": "^3.3.0",
+ "@visx/grid": "^3.5.0",
+ "@visx/group": "^3.3.0",
+ "@visx/hierarchy": "^3.3.0",
+ "@visx/responsive": "^3.3.0",
+ "@visx/scale": "^3.5.0",
+ "@visx/shape": "^3.5.0",
+ "@visx/text": "^3.3.0",
+ "@visx/tooltip": "^3.3.0",
+ "cross-env": "^7.0.3",
+ "d3": "^7.8.5",
"d3-scale-chromatic": "^3.0.0",
- "d3-shape": "^2.0.0",
- "d3-zoom": "^3.0.0",
- "identity-obj-proxy": "^3.0.0",
- "intro.js": "^5.0.0",
- "intro.js-react": "^0.6.0",
- "jest-runner": "^26.1.0",
- "jscharting": "^3.0.2",
- "jsondiffpatch": "^0.3.11",
+ "d3-shape": "^3.2.0",
+ "dotenv": "^16.3.1",
+ "express": "^4.18.2",
+ "html-react-parser": "^5.0.11",
+ "intro.js": "^7.2.0",
+ "intro.js-react": "^1.0.0",
+ "jsondiffpatch": "^0.5.0",
"lodash": "^4.17.21",
- "prop-types": "^15.7.2",
- "rc-slider": "^8.7.1",
- "rc-tooltip": "^3.7.3",
- "react": "^18.0.0",
- "react-apexcharts": "^1.3.7",
- "react-dom": "^18.2.0",
- "react-hover": "^2.0.0",
- "react-html-parser": "^2.0.2",
- "react-json-tree": "^0.11.2",
- "react-redux": "^8.1.3",
- "react-router-dom": "^5.2.0",
- "react-select": "^3.2.0",
- "react-spinners": "^0.11.0",
- "recoil": "0.0.10",
- "redux": "^4.2.1",
- "redux-mock-store": "^1.5.4",
- "styled-components": "^6.0.4",
- "util": "^0.12.4",
- "web-vitals": "^3.5.0",
- "yarn": "^1.22.19"
+ "node": "^18.12.1",
+ "prettier": "^3.1.1",
+ "rc-slider": "^10.5.0",
+ "rc-tooltip": "^6.1.3",
+ "react": "^18.2.0",
+ "react-apexcharts": "^1.4.1",
+ "react-hover": "^3.0.1",
+ "react-json-tree": "^0.18.0",
+ "react-redux": "^9.0.4",
+ "react-select": "^5.8.0",
+ "react-spinners": "^0.13.8",
+ "redux": "^5.0.0",
+ "regenerator-runtime": "^0.14.1",
+ "sass": "^1.69.5",
+ "styled-components": "^6.1.2",
+ "web-vitals": "^3.5.0"
}
}
diff --git a/reactime-website b/reactime-website
index c26af6f6f..9ce6cdc9d 160000
--- a/reactime-website
+++ b/reactime-website
@@ -1 +1 @@
-Subproject commit c26af6f6f3e4949e89c2036dd8cedafba8592756
+Subproject commit 9ce6cdc9d25d3e91aea973ae58726f9d5c9912d3
diff --git a/src/README.md b/src/DEVELOPER_README.md
similarity index 85%
rename from src/README.md
rename to src/DEVELOPER_README.md
index a2a2769f4..a4d6c329d 100644
--- a/src/README.md
+++ b/src/DEVELOPER_README.md
@@ -18,12 +18,10 @@ git clone https://github.com/open-source-labs/reactime.git
```
cd reactime
-npm install --legacy-peer-deps
+npm install
npm run dev
```
-If ‘npm install –legacy-peer-deps’ doesn’t work, install dependencies using ‘npm install --force’
-
With release of Node v18.12.1 (LTS) on 11/4/22, the script has been updated to 'npm run dev' || 'npm run build' for backwards compatibility.
For version Node v16.16.0, please use script 'npm run devlegacy' || 'npm run buildlegacy'
@@ -56,6 +54,24 @@ _Before_ beginning development, especially on teams, make sure to configure your
Here are some notes on the current state of Reactime and considerations for future development.
+## Address open issues on the main OSLabs Reactime Github
+
+There are a variety of open issues on the [OSLabs Reactime Github](https://github.com/open-source-labs/reactime) that remain to be addressed.
+
+## Main Slice Modularity
+
+Currently, Reactime employs Redux Toolkit for state management. At present, all actions are housed within the mainSlice.ts file. As this file has expanded significantly, it would be beneficial to modularize it, creating separate slices for distinct components.
+
+## Testing
+
+With Reactime V23, as a result of updating all outdated packages and peer dependencies, the Jest testing framework has unresolved errors. This should be a pretty easy win for future iterators to bring the Jest library back up and running smoothly. The jest-environment-jsdom package has some deprecated sub-packages, so if there is an alternative that can be used, that would be best, so it does not introduce new deprecated packages.
+
+In addition, while our current test coverage provides a sturdy base, the application can benefit from deeper exploration into critical user paths and broadening end-to-end testing scenarios. Embracing automation and periodic reviews can further ensure consistent quality and robustness in the face of evolving requirements.
+
+## Continue to investigate app behavior on load
+
+With Reactime V23, loading errors were eliminated by having the web app reload upon a Reactime panel being opened. While this provides a working solution to what were persistent loading issues, the app's behavior on load should still be examined. There are odd interactions happening within the message passing framework of chrome which may be a root cause. Please examine the interaction between background.js, contentscript, maincontainer, and redux toolkit.
+
## Including Support for Hooks Beyond useState
Reactime currently shows data stored via useState, but does not show data stored via other hooks such as useContext or useReducer. While showing this data would be simple, maintaining the time travel functionality of Reactime with these hooks would not. _Please see file demo-app/src/client/Components/ButtonsWithMoreHooks.jsx for more details._
@@ -71,11 +87,7 @@ To see how hook data is stored on the fiber tree:
Any changes to console.logs in Reactime can be seen by refreshing the browser the app is running in.
-## Replace Functionality for Outdated Packages
-
-Package dependencies need to be trimmed down, updated, and/or removed. Peer dependency errors are the reason npm install --force may be necessary when installing the dependencies of Reactime. While Reactime v22.0 has reduced package dependency errors for developers from multiple pages of errors down to ~15 errors, the goal is to decrease overall package/library dependency to a minimum to promote long-term maintainability
-
-Material-ui/core has been updated to use React 18. Future developers may choose to remove Material-ui/core from the application to ensure compatibility in the future or continue to build out the UI. The choice is yours!
+## React DevTools Global Hook
React Developer Tools has NOT deprecated \_\_REACT_DEVTOOLS_GLOBAL_HOOK\_\_. However, Reactime v21 has sleuthed and learned the following from the team at React:
@@ -90,13 +102,13 @@ Can Reactime functionality be extended so applications using Redux can track sta
Yes, but it would be very time-consuming and not the most feasible option while Redux devtools exists already. With how Redux devtools is currently set up, a developer is unable to use Redux devtools as a third-party user and integrate its functionality into their own application, as Redux devtools is meant to be used directly on an application using Redux for state-tracking purposes. Since the devtools do not appear to have a public API for integrated use in an application or it simply does not exist, Redux devtools would need to be rebuilt from the ground up and then integrated into Reactime, or built into Reactime directly still from scratch.
-## Main Slice Modularity
+## Newsletter functionality on the Reactime website
-Currently, Reactime employs Redux Toolkit for state management. At present, all actions are housed within the mainSlice.ts file. As this file has expanded significantly, it would be beneficial to modularize it, creating separate slices for distinct components.
+As noted in the [Reactime Webite Github](https://github.com/reactimetravel/reactime-website), a newsletter functionality would be nice but has not been implemented yet.
-## Testing
+## Optimize webpack bundle size in production mode
-While our current test coverage provides a sturdy base, the application can benefit from deeper exploration into critical user paths and broadening end-to-end testing scenarios. Embracing automation and periodic reviews can further ensure consistent quality and robustness in the face of evolving requirements.
+Currently, the webpack bundle size when running in production mode (through npm run build) is much larger than the recommended size. Implementing new rules, plugins, and/or uglification and minification strategies could help reduce the size.
# File Structure
@@ -106,12 +118,11 @@ In the _src_ folder, there are three directories we care about: _app_, _backend_
src/
├── app/ # Frontend code
│ ├── __tests__/ # React Testing Library
-│ ├── actions/ # Redux action creators
│ ├── components/ # React components
-│ ├── constants/ #
│ ├── containers/ # More React components
│ ├── slices/ # Redux Toolkit mechanism for updating state
│ ├── styles/ #
+| ├── App.tsx
│ ├── FrontendTypes.ts # Library of typescript interfaces
│ ├── index.tsx # Starting point for root App component
│ ├── module.d.ts #
@@ -175,11 +186,11 @@ All the diagrams of data flows are available on [MIRO](https://miro.com/app/boar
The general flow of data is described in the following steps:
-![GENERAL DATA FLOW](../assets/DataFlowDiagram.PNG)
+![GENERAL DATA FLOW](../assets/DataFlowDiagramV23.PNG)
1. When the background bundle is loaded by the browser, it executes a script injection into the dom. (see section on _backend_). This script uses a technique called [throttle](https://medium.com/@bitupon.211/debounce-and-throttle-160affa5457b) to send state data from the app to the content script every specified milliseconds (in our case, this interval is 70ms).
-2. The content script (now contentScript.ts) always listens for messages being passed from the extension's target application. Upon receiving data from the target app, the content script will immediately forward this data to the background script which then updates an object called `tabsObj`. Each time `tabsObj` is updated, its latest version will be passed to Reactime, where it is processed for displaying to the user by the _app_ folder scripts.
+2. The content script always listens for messages being passed from the extension's target application. Upon receiving data from the target app, the content script will immediately forward this data to the background script which then updates an object called `tabsObj`. Each time `tabsObj` is updated, its latest version will be passed to Reactime, where it is processed for displaying to the user by the _app_ folder scripts.
3. Likewise, when Reactime emits an action due to user interaction -- a "jump" request for example -- a message will be passed from Reactime via the background script to the content script. Then, the content script will pass a message to the target application containing a payload that represents the state the user wants the DOM to reflect or "jump" to.
- One important thing to note here is that this jump action must be dispatched in the target application (i.e. _backend_ land), because only there do we have direct access to the DOM.
@@ -262,8 +273,10 @@ Once you are ready for launch, follow these steps to simplify deployment to the
4. Update the Store Listing and that’s it! Click “Submit for review” and wait for the Chrome store to process your request
# Past Medium Articles for Reference
--[Reactime 22: Reactime: Real-time Debugging, Timless Results](https://medium.com/@kelvinmirhan/reactime-real-time-debugging-timeless-results-3f163b721d01)
+- [Reactime renovation: Updates Coming in Version 23.0!](https://medium.com/@liam.donaher/reactime-renovation-updates-coming-in-version-23-0-37b2ef2a2771)
+
+- [Reactime 22: Reactime: Real-time Debugging, Timless Results](https://medium.com/@kelvinmirhan/reactime-real-time-debugging-timeless-results-3f163b721d01)
- [Reactime 21: Cheers to Reactime, Version 21!](https://medium.com/@brok3turtl3/cheers-to-reactime-version-21-fa4dafa4bc74)
- [Reactime 20: Reactime just keeps getting better!](https://medium.com/@njhuemmer/reactime-just-keeps-getting-better-b37659ff8b71)
- [Reactime 19: What time is it? It’s still Reactime!](https://medium.com/@minzo.kim/what-time-is-it-its-still-reactime-d496adfa908c)
diff --git a/src/app/components/App.tsx b/src/app/App.tsx
similarity index 89%
rename from src/app/components/App.tsx
rename to src/app/App.tsx
index 06d4050b0..df58c3232 100644
--- a/src/app/components/App.tsx
+++ b/src/app/App.tsx
@@ -1,8 +1,8 @@
import React from 'react';
import { MemoryRouter as Router } from 'react-router-dom';
-import MainContainer from '../containers/MainContainer';
+import MainContainer from './containers/MainContainer';
import { ThemeProvider } from '@mui/material/styles';
-import theme from './theme';
+import theme from './styles/theme';
/*
'currentTab' is the current active tab within Google Chrome.
diff --git a/src/app/FrontendTypes.ts b/src/app/FrontendTypes.ts
index dcc313f5c..223c3a360 100644
--- a/src/app/FrontendTypes.ts
+++ b/src/app/FrontendTypes.ts
@@ -247,6 +247,7 @@ export interface HandleProps {
}
export interface MainSliderProps {
+ className: string;
snapshotsLength: number;
}
@@ -309,13 +310,12 @@ export interface LinkControlProps {
}
export interface ControlStyles {
- fontSize: string;
+ //fontSize: string;
padding: string;
}
export interface DropDownStyle {
margin: string;
- fontSize: string;
fontFamily: string;
borderRadius: string;
borderStyle: string;
@@ -379,3 +379,7 @@ export interface Snapshots {
component3: number;
'all others': number;
}
+
+export interface ErrorContainerProps {
+ port: chrome.runtime.Port | null;
+}
diff --git a/src/app/__tests__/ActionContainer.test.tsx b/src/app/__tests__/ActionContainer.test.tsx
index ae885957b..0d89a2260 100644
--- a/src/app/__tests__/ActionContainer.test.tsx
+++ b/src/app/__tests__/ActionContainer.test.tsx
@@ -1,6 +1,6 @@
import React from 'react';
import { render as rtlRender, screen, fireEvent } from '@testing-library/react';
-import '@testing-library/jest-dom/extend-expect';
+import '@testing-library/jest-dom';
import ActionContainer from '../containers/ActionContainer';
import TravelContainer from '../containers/TravelContainer';
import { Provider } from 'react-redux';
@@ -132,7 +132,7 @@ const customStore = configureStore({
const render = (component) => rtlRender({component});
const MockRouteDescription = jest.fn();
-jest.mock('../components/RouteDescription', () => () => {
+jest.mock('../components/Actions/RouteDescription', () => () => {
MockRouteDescription();
return
MockRouteDescription
;
});
diff --git a/src/app/__tests__/ButtonContainer.test.tsx b/src/app/__tests__/ButtonContainer.test.tsx
index 7fbb048a4..0cb84ddae 100644
--- a/src/app/__tests__/ButtonContainer.test.tsx
+++ b/src/app/__tests__/ButtonContainer.test.tsx
@@ -1,6 +1,6 @@
import React from 'react';
import { render as rtlRender, screen, fireEvent } from '@testing-library/react';
-import '@testing-library/jest-dom/extend-expect';
+import '@testing-library/jest-dom';
import { TextEncoder } from 'util';
global.TextEncoder = TextEncoder;
import ButtonsContainer from '../containers/ButtonsContainer';
diff --git a/src/app/__tests__/ErrorContainer.test.tsx b/src/app/__tests__/ErrorContainer.test.tsx
index c7cda0144..8072f86d0 100644
--- a/src/app/__tests__/ErrorContainer.test.tsx
+++ b/src/app/__tests__/ErrorContainer.test.tsx
@@ -1,6 +1,6 @@
import React from 'react';
import { render as rtlRender, screen } from '@testing-library/react';
-import '@testing-library/jest-dom/extend-expect'; // needed this to extend the jest-dom assertions (ex toHaveTextContent)
+import '@testing-library/jest-dom'; // needed this to extend the jest-dom assertions (ex toHaveTextContent)
import ErrorContainer from '../containers/ErrorContainer';
import { configureStore } from '@reduxjs/toolkit';
import { mainSlice } from '../slices/mainSlice';
diff --git a/src/app/__tests__/ErrorMsg.test.tsx b/src/app/__tests__/ErrorMsg.test.tsx
index 5c1ef1bf0..e0247929f 100644
--- a/src/app/__tests__/ErrorMsg.test.tsx
+++ b/src/app/__tests__/ErrorMsg.test.tsx
@@ -1,7 +1,7 @@
import React from 'react';
import { render, screen } from '@testing-library/react';
-import '@testing-library/jest-dom/extend-expect'; // needed this to extend the jest-dom assertions (ex toHaveTextContent)
-import ErrorMsg from '../components/ErrorMsg';
+import '@testing-library/jest-dom'; // needed this to extend the jest-dom assertions (ex toHaveTextContent)
+import ErrorMsg from '../components/ErrorHandling/ErrorMsg';
const props = {
loadingArray: [false],
@@ -11,6 +11,7 @@ const props = {
targetPageisaReactApp: true,
},
launchContent: null,
+ reinitialize: null,
};
describe('unit testing for ErrorContainer.tsx', () => {
diff --git a/src/app/__tests__/Loader.test.tsx b/src/app/__tests__/Loader.test.tsx
index a60438323..0e96910a9 100644
--- a/src/app/__tests__/Loader.test.tsx
+++ b/src/app/__tests__/Loader.test.tsx
@@ -1,16 +1,18 @@
import React from 'react';
import { render } from '@testing-library/react';
-import '@testing-library/jest-dom/extend-expect'; // needed this to extend the jest-dom assertions (ex toHaveTextContent)
-import Loader from '../components/Loader';
+import '@testing-library/jest-dom'; // needed this to extend the jest-dom assertions (ex toHaveTextContent)
+import Loader from '../components/ErrorHandling/Loader';
describe('unit testing for Loader.tsx', () => {
test('renders a loading icon', () => {
const { container } = render();
- expect(container.firstChild).toHaveClass('css-1tm071a');
+ // console.log('this is our container.firstChild: ', container.firstChild);
+ expect(container.firstChild).toHaveClass('docs-story css-kdwx3d');
});
test('renders a fail icon', () => {
const { container } = render();
+ // console.log('this is a fail2: ', container.getElementsByClassName('fail')[0]);
expect(container.getElementsByClassName('fail').length).toBe(1);
});
diff --git a/src/app/__tests__/MainContainer.test.tsx b/src/app/__tests__/MainContainer.test.tsx
index e279bb24f..93cf50054 100644
--- a/src/app/__tests__/MainContainer.test.tsx
+++ b/src/app/__tests__/MainContainer.test.tsx
@@ -16,7 +16,7 @@ const mockState = {
},
}; // End
-const chrome = require('sinon-chrome');
+// const chrome = require('sinon-chrome');
const mockActionContainer = jest.fn();
jest.mock('../containers/ActionContainer', () => (props) => {
@@ -55,17 +55,17 @@ jest.mock('../../../node_modules/intro.js/introjs.css', () => jest.fn());
useDispatch.mockReturnValue(dispatch);
useSelector.mockImplementation((callback) => callback(mockState));
-global.chrome = chrome;
-const port = {
- onMessage: {
- addListener: () => {},
- hasListener: () => {},
- },
- onDisconnect: {
- addListener: () => {},
- },
-};
-chrome.runtime.connect.returns(port);
+// global.chrome = chrome;
+// const port = {
+// onMessage: {
+// addListener: () => {},
+// hasListener: () => {},
+// },
+// onDisconnect: {
+// addListener: () => {},
+// },
+// };
+// chrome.runtime.connect.returns(port);
describe('With no snapshots, should not render any containers', () => {
test('With no snapshots, ErrorContainer should render', () => {
diff --git a/src/app/__tests__/MainSlider.test.tsx b/src/app/__tests__/MainSlider.test.tsx
index 8f9d99b08..30a152f4c 100644
--- a/src/app/__tests__/MainSlider.test.tsx
+++ b/src/app/__tests__/MainSlider.test.tsx
@@ -1,7 +1,7 @@
import React from 'react';
import { render as rtlRender, screen } from '@testing-library/react';
-import '@testing-library/jest-dom/extend-expect';
-import MainSlider from '../components/MainSlider';
+import '@testing-library/jest-dom';
+import MainSlider from '../components/TimeTravel/MainSlider';
import { mainSlice } from '../slices/mainSlice';
import { Provider } from 'react-redux';
import { configureStore } from '@reduxjs/toolkit';
diff --git a/src/app/__tests__/TravelContainer.test.tsx b/src/app/__tests__/TravelContainer.test.tsx
index fb3d06b85..357b474eb 100644
--- a/src/app/__tests__/TravelContainer.test.tsx
+++ b/src/app/__tests__/TravelContainer.test.tsx
@@ -6,8 +6,8 @@ import { configureStore } from '@reduxjs/toolkit';
import { mainSlice } from '../slices/mainSlice';
import { useDispatch } from 'react-redux';
import { ThemeProvider } from '@mui/material/styles';
-import theme from '../components/theme';
-import '@testing-library/jest-dom/extend-expect'; // needed this to extend the jest-dom assertions (ex toHaveTextContent)
+import theme from '../styles/theme';
+import '@testing-library/jest-dom'; // needed this to extend the jest-dom assertions (ex toHaveTextContent)
const customTabs = {
87: {
diff --git a/src/app/__tests__/TravelForwardBackward.test.tsx b/src/app/__tests__/TravelForwardBackward.test.tsx
index 3b482e567..7d7069882 100644
--- a/src/app/__tests__/TravelForwardBackward.test.tsx
+++ b/src/app/__tests__/TravelForwardBackward.test.tsx
@@ -5,7 +5,7 @@ import { Provider } from 'react-redux';
import { configureStore } from '@reduxjs/toolkit';
import { mainSlice } from '../slices/mainSlice';
import { useDispatch } from 'react-redux';
-import '@testing-library/jest-dom/extend-expect'; // needed this to extend the jest-dom assertions (ex toHaveTextContent)
+import '@testing-library/jest-dom'; // needed this to extend the jest-dom assertions (ex toHaveTextContent)
const customTabs = {
87: {
diff --git a/src/app/__tests__/Tutorial.test.tsx b/src/app/__tests__/Tutorial.test.tsx
index 49a3f3724..103496748 100644
--- a/src/app/__tests__/Tutorial.test.tsx
+++ b/src/app/__tests__/Tutorial.test.tsx
@@ -3,8 +3,8 @@ import { render, screen, fireEvent } from '@testing-library/react';
import '@testing-library/jest-dom';
import { TextEncoder } from 'util';
global.TextEncoder = TextEncoder;
-import '@testing-library/jest-dom/extend-expect';
-import Tutorial from '../components/Tutorial';
+import '@testing-library/jest-dom';
+import Tutorial from '../components/Buttons/Tutorial';
const dispatch = jest.fn();
const props = {
diff --git a/src/app/__tests__/WebMetrics.test.tsx b/src/app/__tests__/WebMetrics.test.tsx
index 4db91a7e6..7702871cc 100644
--- a/src/app/__tests__/WebMetrics.test.tsx
+++ b/src/app/__tests__/WebMetrics.test.tsx
@@ -1,7 +1,7 @@
import React from 'react';
import { render as rtlRender } from '@testing-library/react';
-import '@testing-library/jest-dom/extend-expect';
-import WebMetrics from '../components/WebMetrics';
+import '@testing-library/jest-dom';
+import WebMetrics from '../components/StateRoute/WebMetrics/WebMetrics';
import { useDispatch, Provider } from 'react-redux';
import { configureStore } from '@reduxjs/toolkit';
import { mainSlice } from '../slices/mainSlice';
diff --git a/src/app/__tests__/action.test.tsx b/src/app/__tests__/action.test.tsx
index 2574fea1d..c20ef3065 100644
--- a/src/app/__tests__/action.test.tsx
+++ b/src/app/__tests__/action.test.tsx
@@ -1,8 +1,8 @@
import React from 'react';
import { render as rtlRender, screen, fireEvent } from '@testing-library/react';
// import user from '@testing-library/user-event'; //might be unused
-import '@testing-library/jest-dom/extend-expect'; // needed this to extend the jest-dom assertions (ex toHaveTextContent)
-import Action from '../components/Action';
+import '@testing-library/jest-dom'; // needed this to extend the jest-dom assertions (ex toHaveTextContent)
+import Action from '../components/Actions/Action';
import { changeView, changeSlider } from '../slices/mainSlice';
import { Provider } from 'react-redux';
import { store } from '../store'; //importing store for testing to give us access to Redux Store we configured
diff --git a/src/app/__tests__/dropdown.test.tsx b/src/app/__tests__/dropdown.test.tsx
index 1ccc7924b..6bf73e349 100644
--- a/src/app/__tests__/dropdown.test.tsx
+++ b/src/app/__tests__/dropdown.test.tsx
@@ -1,7 +1,7 @@
import React from 'react';
import { render, fireEvent } from '@testing-library/react';
-import Dropdown from '../components/Dropdown';
-import '@testing-library/jest-dom/extend-expect';
+import Dropdown from '../components/TimeTravel/Dropdown';
+import '@testing-library/jest-dom';
describe('Dropdown component test', () => {
const speeds = [
diff --git a/src/app/components/Action.tsx b/src/app/components/Actions/Action.tsx
similarity index 97%
rename from src/app/components/Action.tsx
rename to src/app/components/Actions/Action.tsx
index db42583c8..34f84b740 100644
--- a/src/app/components/Action.tsx
+++ b/src/app/components/Actions/Action.tsx
@@ -4,8 +4,8 @@
import React from 'react';
import ReactHover, { Trigger, Hover } from 'react-hover';
-import { changeView, changeSlider } from '../slices/mainSlice';
-import { ActionProps, OptionsCursorTrueWithMargin } from '../FrontendTypes';
+import { changeView, changeSlider } from '../../slices/mainSlice';
+import { ActionProps, OptionsCursorTrueWithMargin } from '../../FrontendTypes';
import { useDispatch } from 'react-redux';
/*
@@ -117,9 +117,9 @@ const Action = (props: ActionProps): JSX.Element => {
>
diff --git a/src/app/components/RouteDescription.tsx b/src/app/components/Actions/RouteDescription.tsx
similarity index 100%
rename from src/app/components/RouteDescription.tsx
rename to src/app/components/Actions/RouteDescription.tsx
diff --git a/src/app/components/SwitchApp.tsx b/src/app/components/Actions/SwitchApp.tsx
similarity index 93%
rename from src/app/components/SwitchApp.tsx
rename to src/app/components/Actions/SwitchApp.tsx
index 8901bce54..03c2c4757 100644
--- a/src/app/components/SwitchApp.tsx
+++ b/src/app/components/Actions/SwitchApp.tsx
@@ -1,9 +1,10 @@
import React from 'react';
import Select from 'react-select';
-import { setTab } from '../slices/mainSlice';
+import { setTab } from '../../slices/mainSlice';
//importing these methods for RTK
import { useSelector, useDispatch } from 'react-redux';
-import { MainState, RootState } from '../FrontendTypes';
+import { MainState, RootState } from '../../FrontendTypes';
+import { current } from '@reduxjs/toolkit';
/*
This is the dropdown menu on the left column above the 'clear' button and the state snapshots list. It allows us to switch between which website/application we are currently working on.
@@ -17,7 +18,6 @@ const SwitchAppDropdown = (): JSX.Element => {
const { currentTab, tabs }: MainState = useSelector((state: RootState) => state.main);
const tabsArray: {}[] = []; // tabsArray is an empty array that will take objects as it's elements
-
Object.keys(tabs).forEach((tab) => {
// We populate our 'tabsArray' with objects derived from the 'tab' that is currently being iterated on.
tabsArray.unshift({ value: tab, label: tabs[tab].title });
diff --git a/src/app/components/StatusDot.tsx b/src/app/components/Buttons/StatusDot.tsx
similarity index 100%
rename from src/app/components/StatusDot.tsx
rename to src/app/components/Buttons/StatusDot.tsx
diff --git a/src/app/components/Tutorial.tsx b/src/app/components/Buttons/Tutorial.tsx
similarity index 98%
rename from src/app/components/Tutorial.tsx
rename to src/app/components/Buttons/Tutorial.tsx
index a07624ecb..7e86bc094 100644
--- a/src/app/components/Tutorial.tsx
+++ b/src/app/components/Buttons/Tutorial.tsx
@@ -5,11 +5,11 @@
import * as React from 'react';
import { Component } from 'react';
import 'intro.js/introjs.css';
-import { TutorialProps, TutorialState, StepsObj } from '../FrontendTypes';
+import { TutorialProps, TutorialState, StepsObj } from '../../FrontendTypes';
import { Button } from '@mui/material';
import HelpOutlineIcon from '@mui/icons-material/HelpOutline';
const { Steps } = require('intro.js-react'); //Must be required in. This enables compatibility with TS. If imported in, throws ts error of not rendering steps as a class component correctly. The package 'intro.js-react' is small React wrapper around Intro.js. The wrapper provides support for both steps and hints. https://introjs.com/docs/
-import { setCurrentTabInApp, tutorialSaveSeriesToggle } from '../slices/mainSlice';
+import { setCurrentTabInApp, tutorialSaveSeriesToggle } from '../../slices/mainSlice';
import { useDispatch, useSelector } from 'react-redux';
/*
This is the tutorial displayed when the "How to use" button is clicked
@@ -365,7 +365,7 @@ export default class Tutorial extends Component {
type='button'
onClick={() => startIntro()}
>
- Tutorial
+ Tutorial
>
);
diff --git a/src/app/components/DiffRoute.tsx b/src/app/components/DiffRoute.tsx
deleted file mode 100644
index 1cb29c2a2..000000000
--- a/src/app/components/DiffRoute.tsx
+++ /dev/null
@@ -1,28 +0,0 @@
-import React from 'react';
-import { MemoryRouter as Router, Route, NavLink, Switch } from 'react-router-dom';
-import Diff from './Diff';
-import { DiffRouteProps } from '../FrontendTypes';
-
-/*
- Loads the appropriate DiffRoute view and renders the 'Tree' and 'Raw' navbar buttons after clicking on the 'Diff' button located near the top rightmost corner.
-*/
-
-// 'DiffRoute' only passed in prop is 'snapshot' from 'tabs[currentTab]' object in 'MainContainer'
-const DiffRoute = (props: DiffRouteProps): JSX.Element => (
-
-
-
- Tree
-
-
- Raw
-
-
-
- } />
- } />
-
-
-);
-
-export default DiffRoute;
diff --git a/src/app/components/Diff.tsx b/src/app/components/DiffRoute/Diff.tsx
similarity index 85%
rename from src/app/components/Diff.tsx
rename to src/app/components/DiffRoute/Diff.tsx
index cadf466bd..340c88790 100644
--- a/src/app/components/Diff.tsx
+++ b/src/app/components/DiffRoute/Diff.tsx
@@ -1,7 +1,14 @@
import React from 'react';
import { diff, formatters } from 'jsondiffpatch';
-import ReactHtmlParser from 'react-html-parser';
-import { CurrentTab, DiffProps, MainState, RootState, StatelessCleaning } from '../FrontendTypes';
+// const jsondiffpatch = require('jsondiffpatch');
+import Parse from 'html-react-parser';
+import {
+ CurrentTab,
+ DiffProps,
+ MainState,
+ RootState,
+ StatelessCleaning,
+} from '../../FrontendTypes';
import { useSelector } from 'react-redux';
/**
@@ -29,7 +36,7 @@ function Diff(props: DiffProps): JSX.Element {
}
/*
- State snapshot objects have the following structure:
+ State snapshot objects have the following structure:
{
children: array of objects
componentData: object
@@ -82,9 +89,10 @@ function Diff(props: DiffProps): JSX.Element {
const previousDisplay: StatelessCleaning = statelessCleaning(previous); // displays stateful data from the first snapshot that was taken before our current snapshot.
- const delta: StatelessCleaning = diff(previousDisplay, snapshot); // diff function from 'jsondiffpatch' returns the difference in state between 'previousDisplay' and 'snapshot'
+ const delta = diff(previousDisplay, snapshot); // diff function from 'jsondiffpatch' returns the difference in state between 'previousDisplay' and 'snapshot'
- const html: StatelessCleaning = formatters.html.format(delta, previousDisplay); // formatters function from 'jsondiffpatch' returns an html string that shows the difference between delta and the previousDisplay
+ const html = formatters.html.format(delta, previousDisplay); // formatters function from 'jsondiffpatch' returns an html string that shows the difference between delta and the previousDisplay
+ // console.log(html);
if (show)
formatters.html.showUnchanged(); // shows unchanged values if we're on the '/diffRaw' path
@@ -100,7 +108,7 @@ function Diff(props: DiffProps): JSX.Element {
);
}
- return
{ReactHtmlParser(html)}
; // ReactHTMLParser from 'react-html-parser' package converts the HTML string into a react component.
+ return
{Parse(html)}
; // HTMLReactParser from 'html-react-parser' package converts the HTML string into a react component.
}
export default Diff;
diff --git a/src/app/components/DiffRoute/DiffRoute.tsx b/src/app/components/DiffRoute/DiffRoute.tsx
new file mode 100644
index 000000000..081f7ebd1
--- /dev/null
+++ b/src/app/components/DiffRoute/DiffRoute.tsx
@@ -0,0 +1,36 @@
+import React from 'react';
+import { MemoryRouter as Router, Route, NavLink, Routes } from 'react-router-dom';
+import Diff from './Diff';
+import { DiffRouteProps } from '../../FrontendTypes';
+
+/*
+ Loads the appropriate DiffRoute view and renders the 'Tree' and 'Raw' navbar buttons after clicking on the 'Diff' button located near the top rightmost corner.
+*/
+
+// 'DiffRoute' only passed in prop is 'snapshot' from 'tabs[currentTab]' object in 'MainContainer'
+const DiffRoute = (props: DiffRouteProps): JSX.Element => (
+
+);
+
+export default DiffRoute;
diff --git a/src/app/components/ErrorHandler.tsx b/src/app/components/ErrorHandling/ErrorHandler.tsx
similarity index 100%
rename from src/app/components/ErrorHandler.tsx
rename to src/app/components/ErrorHandling/ErrorHandler.tsx
diff --git a/src/app/components/ErrorMsg.tsx b/src/app/components/ErrorHandling/ErrorMsg.tsx
similarity index 92%
rename from src/app/components/ErrorMsg.tsx
rename to src/app/components/ErrorHandling/ErrorMsg.tsx
index 53db3c899..7ad1935a2 100644
--- a/src/app/components/ErrorMsg.tsx
+++ b/src/app/components/ErrorHandling/ErrorMsg.tsx
@@ -26,18 +26,18 @@ function parseError(loadingArray: [], status: Record): string {
return 'default';
}
-function ErrorMsg({ loadingArray, status, launchContent }): JSX.Element {
+function ErrorMsg({ loadingArray, status, launchContent, reinitialize }): JSX.Element {
switch (
parseError(loadingArray, status) // parseError returns a string based on the loadingArray and status. The returned string is matched to a case so that an appropriate error message will be displayed to the user
) {
case 'Content Script Error':
return (
- Could not connect to the Target App. Try closing Reactime and reloading the page.
+ Target App not yet found...
+ If you encounter this error on the initial launch of Reactime, try refreshing the webpage
+ you are developing.
- If you encounter this error on the initial launch of Reactime, refresh the webpage you are
- developing.
If Reactime is running as an iframe in your developer tools, right click on the Reactime
application and click 'Reload Frame'
@@ -81,7 +81,7 @@ function ErrorMsg({ loadingArray, status, launchContent }): JSX.Element {
case 'Not React App':
return (
- The Target app is either not a React application or is not compatible with Reactime
+ The Target app is either not a React application or is not compatible with Reactime.
);
default:
diff --git a/src/app/components/Loader.tsx b/src/app/components/ErrorHandling/Loader.tsx
similarity index 100%
rename from src/app/components/Loader.tsx
rename to src/app/components/ErrorHandling/Loader.tsx
diff --git a/src/app/components/StateRoute/ComponentMap/ComponentMap.tsx b/src/app/components/StateRoute/ComponentMap/ComponentMap.tsx
index f27616ab7..791397bd5 100644
--- a/src/app/components/StateRoute/ComponentMap/ComponentMap.tsx
+++ b/src/app/components/StateRoute/ComponentMap/ComponentMap.tsx
@@ -22,6 +22,13 @@ import { toggleExpanded, setCurrentTabInApp } from '../../../slices/mainSlice';
import { useDispatch } from 'react-redux';
import { LinkTypesProps, DefaultMargin, ToolTipStyles } from '../../../FrontendTypes';
+const linkStroke = '#F00008'; //#F00008 original
+const rootStroke = '#F00008'; //#F00008 original
+const nodeParentFill = '#161521'; //#161521 original
+const nodeChildFill = '#62d6fb'; //#62d6fb original
+const nodeParentStroke = '#F00008'; //#F00008 original
+const nodeChildStroke = '#4D4D4D'; //#4D4D4D original
+
const defaultMargin: DefaultMargin = {
top: 30,
left: 30,
@@ -29,6 +36,13 @@ const defaultMargin: DefaultMargin = {
bottom: 70,
};
+const nodeCoords: object = {};
+let count: number = 0;
+let aspect: number = 1; // aspect resizes the component map container to accommodate large node trees on complex sites
+let nodeCoordTier = 0;
+let nodeOneLeft = 0;
+let nodeTwoLeft = 2;
+
export default function ComponentMap({
// imported props to be used to display the dendrogram
width: totalWidth,
@@ -127,6 +141,7 @@ export default function ComponentMap({
};
const formatRenderTime: string = (time: number): string => {
+ if (!time) return 'No time information';
const renderTime = time.toFixed(3);
return `${renderTime} ms `;
};
@@ -189,31 +204,34 @@ export default function ComponentMap({
setSelectedNode={setSelectedNode}
/>
-
A url string.
+