From 183f96f2ac35c36772781cb37bc3ce842e2dc78b Mon Sep 17 00:00:00 2001 From: Brian Vaughn Date: Tue, 13 Aug 2019 17:58:03 -0700 Subject: [PATCH] Prettier --- fixtures/devtools/regression/server.js | 2 +- fixtures/devtools/regression/shared.js | 28 +- .../shell/app/DeeplyNestedComponents/index.js | 2 +- .../devtools/shell/app/EditableProps/index.js | 20 +- .../devtools/shell/app/Hydration/index.js | 4 +- fixtures/devtools/shell/app/Iframe/index.js | 4 +- .../shell/app/InspectableElements/Contexts.js | 4 +- .../app/InspectableElements/CustomHooks.js | 2 +- .../InspectableElements.js | 2 +- .../app/InspectableElements/NestedProps.js | 2 +- .../shell/app/InteractionTracing/index.js | 94 ++--- .../shell/app/PriorityLevels/index.js | 2 +- .../shell/app/ReactNativeWeb/index.js | 8 +- .../devtools/shell/app/SuspenseTree/index.js | 15 +- fixtures/devtools/shell/app/ToDoList/List.js | 42 +-- .../devtools/shell/app/ToDoList/ListItem.js | 24 +- fixtures/devtools/shell/app/Toggle/index.js | 4 +- fixtures/devtools/shell/app/index.js | 4 +- fixtures/devtools/shell/src/devtools.js | 10 +- fixtures/devtools/shell/webpack.config.js | 6 +- packages/react-devtools-core/src/backend.js | 47 +-- packages/react-devtools-core/src/editor.js | 18 +- .../react-devtools-core/src/standalone.js | 49 +-- .../react-devtools-core/webpack.backend.js | 6 +- .../react-devtools-core/webpack.standalone.js | 6 +- .../react-devtools-extensions/babel.config.js | 6 +- .../react-devtools-extensions/chrome/build.js | 10 +- .../react-devtools-extensions/chrome/test.js | 2 +- .../firefox/build.js | 2 +- .../react-devtools-extensions/firefox/test.js | 6 +- .../flow-typed/chrome.js | 2 +- .../flow-typed/jest.js | 24 +- .../npm/react-test-renderer_v16.x.x.js | 14 +- packages/react-devtools-extensions/flow.js | 2 +- .../react-devtools-extensions/shared/build.js | 12 +- .../shared/deploy.js | 6 +- .../shared/popups/shared.js | 2 +- .../shared/src/backend.js | 4 +- .../shared/src/background.js | 2 +- .../shared/src/injectGlobalHook.js | 6 +- .../shared/src/main.js | 11 +- .../shared/src/renderer.js | 2 +- .../shared/src/utils.js | 2 +- .../shared/webpack.backend.js | 6 +- .../shared/webpack.config.js | 6 +- packages/react-devtools-extensions/utils.js | 10 +- packages/react-devtools-inline/src/backend.js | 18 +- .../react-devtools-inline/src/frontend.js | 21 +- .../react-devtools-inline/webpack.config.js | 6 +- .../src/__tests__/bridge-test.js | 2 +- .../src/__tests__/console-test.js | 40 +-- .../__tests__/inspectedElementContext-test.js | 180 +++++----- .../__tests__/inspectedElementSerializer.js | 2 +- .../__tests__/legacy/inspectElement-test.js | 42 +-- .../__tests__/legacy/storeLegacy-v15-test.js | 106 +++--- .../src/__tests__/ownersListContext-test.js | 46 +-- .../src/__tests__/profilerContext-test.js | 61 ++-- .../src/__tests__/profilerStore-test.js | 4 +- .../src/__tests__/profilingCache-test.js | 100 +++--- .../src/__tests__/profilingCharts-test.js | 50 +-- .../profilingCommitTreeBuilder-test.js | 6 +- .../src/__tests__/profilingUtils-test.js | 4 +- .../src/__tests__/setupTests.js | 11 +- .../src/__tests__/store-test.js | 124 +++---- .../__tests__/storeComponentFilters-test.js | 42 +-- .../src/__tests__/storeOwners-test.js | 54 +-- .../src/__tests__/storeSerializer.js | 9 +- .../src/__tests__/storeStressSync-test.js | 158 ++++----- .../storeStressTestConcurrent-test.js | 158 ++++----- .../src/__tests__/treeContext-test.js | 140 ++++---- .../src/__tests__/utils.js | 34 +- .../NativeStyleEditor/resolveBoxStyle.js | 4 +- .../setupNativeStyleEditor.js | 64 ++-- .../src/backend/agent.js | 44 +-- .../src/backend/console.js | 14 +- .../src/backend/describeComponentFrame.js | 2 +- .../src/backend/index.js | 16 +- .../src/backend/legacy/renderer.js | 57 +-- .../src/backend/legacy/utils.js | 4 +- .../src/backend/renderer.js | 145 ++++---- .../src/backend/types.js | 27 +- .../src/backend/utils.js | 10 +- .../backend/views/Highlighter/Highlighter.js | 2 +- .../src/backend/views/Highlighter/Overlay.js | 18 +- .../src/backend/views/Highlighter/index.js | 18 +- packages/react-devtools-shared/src/bridge.js | 14 +- .../react-devtools-shared/src/constants.js | 2 +- .../src/devtools/ProfilerStore.js | 24 +- .../src/devtools/ProfilingCache.js | 8 +- .../src/devtools/cache.js | 14 +- .../src/devtools/index.js | 2 +- .../src/devtools/store.js | 86 ++--- .../src/devtools/utils.js | 13 +- .../src/devtools/views/ButtonIcon.js | 5 +- .../src/devtools/views/Components/Badge.js | 11 +- .../devtools/views/Components/Components.js | 12 +- .../views/Components/EditableValue.js | 45 +-- .../src/devtools/views/Components/Element.js | 58 ++- .../views/Components/ExpandCollapseToggle.js | 3 +- .../devtools/views/Components/HocBadges.js | 11 +- .../devtools/views/Components/HooksTree.js | 43 +-- .../Components/InspectHostNodesToggle.js | 24 +- .../Components/InspectedElementContext.js | 331 +++++++++--------- .../views/Components/InspectedElementTree.js | 15 +- .../src/devtools/views/Components/KeyValue.js | 54 ++- .../NativeStyleEditor/AutoSizeInput.js | 35 +- .../NativeStyleEditor/LayoutViewer.js | 6 +- .../NativeStyleEditor/StyleEditor.js | 25 +- .../Components/NativeStyleEditor/context.js | 184 +++++----- .../Components/NativeStyleEditor/index.js | 22 +- .../views/Components/OwnersListContext.js | 125 +++---- .../devtools/views/Components/OwnersStack.js | 94 ++--- .../devtools/views/Components/SearchInput.js | 87 +++-- .../views/Components/SelectedElement.js | 267 +++++++------- .../views/Components/SelectedTreeHighlight.js | 18 +- .../src/devtools/views/Components/Tree.js | 293 ++++++++-------- .../devtools/views/Components/TreeContext.js | 149 ++++---- .../views/Components/TreeFocusedContext.js | 2 +- .../Components/ViewElementSourceContext.js | 2 +- .../src/devtools/views/Components/types.js | 10 +- .../src/devtools/views/DevTools.js | 31 +- .../src/devtools/views/ErrorBoundary.js | 13 +- .../src/devtools/views/Icon.js | 5 +- .../src/devtools/views/ModalDialog.js | 32 +- .../src/devtools/views/Profiler/ChartNode.js | 3 +- .../Profiler/ClearProfilingDataButton.js | 13 +- .../views/Profiler/CommitFlamegraph.js | 98 +++--- .../Profiler/CommitFlamegraphListItem.js | 24 +- .../devtools/views/Profiler/CommitRanked.js | 43 ++- .../views/Profiler/CommitRankedListItem.js | 20 +- .../views/Profiler/CommitTreeBuilder.js | 52 +-- .../views/Profiler/FlamegraphChartBuilder.js | 19 +- .../views/Profiler/InteractionListItem.js | 37 +- .../devtools/views/Profiler/Interactions.js | 94 ++--- .../Profiler/InteractionsChartBuilder.js | 4 +- .../devtools/views/Profiler/NoInteractions.js | 5 +- .../src/devtools/views/Profiler/Profiler.js | 11 +- .../views/Profiler/ProfilerContext.js | 37 +- .../Profiler/ProfilingImportExportButtons.js | 144 ++++---- .../views/Profiler/RankedChartBuilder.js | 17 +- .../devtools/views/Profiler/RecordToggle.js | 13 +- .../views/Profiler/ReloadAndProfileButton.js | 37 +- .../devtools/views/Profiler/RootSelector.js | 12 +- .../views/Profiler/SidebarCommitInfo.js | 15 +- .../views/Profiler/SidebarInteractions.js | 33 +- .../Profiler/SidebarSelectedFiberInfo.js | 40 +-- .../views/Profiler/SnapshotCommitList.js | 70 ++-- .../views/Profiler/SnapshotCommitListItem.js | 15 +- .../views/Profiler/SnapshotSelector.js | 80 +++-- .../src/devtools/views/Profiler/types.js | 2 +- .../src/devtools/views/Profiler/utils.js | 32 +- .../src/devtools/views/ReactLogo.js | 5 +- .../views/Settings/ComponentsSettings.js | 67 ++-- .../views/Settings/GeneralSettings.js | 18 +- .../views/Settings/ProfilerSettings.js | 22 +- .../views/Settings/SettingsContext.js | 167 ++++----- .../devtools/views/Settings/SettingsModal.js | 29 +- .../views/Settings/SettingsModalContext.js | 12 +- .../Settings/SettingsModalContextToggle.js | 17 +- .../ShowWelcomeToTheNewDevToolsDialog.js | 48 +-- .../src/devtools/views/TabBar.js | 15 +- .../src/devtools/views/Toggle.js | 5 +- .../views/WarnIfLegacyBackendDetected.js | 103 +++--- .../src/devtools/views/context.js | 6 +- .../src/devtools/views/hooks.js | 252 ++++++------- .../src/devtools/views/portaledContent.js | 6 +- .../src/devtools/views/utils.js | 10 +- packages/react-devtools-shared/src/hook.js | 10 +- .../react-devtools-shared/src/hydration.js | 28 +- packages/react-devtools-shared/src/utils.js | 26 +- packages/react-devtools/app.js | 6 +- packages/react-devtools/bin.js | 2 +- packages/react-devtools/index.js | 2 +- 173 files changed, 3253 insertions(+), 3133 deletions(-) diff --git a/fixtures/devtools/regression/server.js b/fixtures/devtools/regression/server.js index f7e03f075dcc5..34853173a01ee 100755 --- a/fixtures/devtools/regression/server.js +++ b/fixtures/devtools/regression/server.js @@ -5,7 +5,7 @@ const http = require('http'); const serveStatic = require('serve-static'); // Serve fixtures folder -const serve = serveStatic(__dirname, { index: 'index.html' }); +const serve = serveStatic(__dirname, {index: 'index.html'}); // Create server const server = http.createServer(function onRequest(req, res) { diff --git a/fixtures/devtools/regression/shared.js b/fixtures/devtools/regression/shared.js index 2afd063b6bda0..055ba3d65e553 100644 --- a/fixtures/devtools/regression/shared.js +++ b/fixtures/devtools/regression/shared.js @@ -10,7 +10,7 @@ const minor = pieces[0] === '0' ? parseInt(pieces[2], 10) : parseInt(pieces[1], 10); // Convenience wrapper to organize API features in DevTools. -function Feature({ children, label, version }) { +function Feature({children, label, version}) { return (
@@ -60,10 +60,10 @@ switch (major) { } case 6: // memo - function LabelComponent({ label }) { + function LabelComponent({label}) { return ; } - const AnonymousMemoized = React.memo(({ label }) => ( + const AnonymousMemoized = React.memo(({label}) => ( )); const Memoized = React.memo(LabelComponent); @@ -91,8 +91,8 @@ switch (major) { getResourceKey ); class Suspending extends React.Component { - state = { useSuspense: false }; - useSuspense = () => this.setState({ useSuspense: true }); + state = {useSuspense: false}; + useSuspense = () => this.setState({useSuspense: true}); render() { if (this.state.useSuspense) { const text = Resource.read(['loaded', 2000]); @@ -141,9 +141,9 @@ switch (major) { case 4: // unstable_Profiler class ProfilerChild extends React.Component { - state = { count: 0 }; + state = {count: 0}; incrementCount = () => - this.setState(prevState => ({ count: prevState.count + 1 })); + this.setState(prevState => ({count: prevState.count + 1})); render() { return (
@@ -159,8 +159,7 @@ switch (major) { + version="16.4+">
@@ -230,8 +229,7 @@ switch (major) { + version="16.3+">
unstable_AsyncMode was added in 16.3, renamed to @@ -271,13 +269,13 @@ function Even() { // Simple stateful app shared by all React versions class SimpleApp extends React.Component { - state = { count: 0 }; + state = {count: 0}; incrementCount = () => { - const updaterFn = prevState => ({ count: prevState.count + 1 }); + const updaterFn = prevState => ({count: prevState.count + 1}); trace('Updating count', performance.now(), () => this.setState(updaterFn)); }; render() { - const { count } = this.state; + const {count} = this.state; return (
{count % 2 === 0 ? ( @@ -299,7 +297,7 @@ apps.push( ); // This component, with the version prop, helps organize DevTools at a glance. -function TopLevelWrapperForDevTools({ version }) { +function TopLevelWrapperForDevTools({version}) { let header =

React {version}

; if (version.includes('canary')) { const commitSha = version.match(/.+canary-(.+)/)[1]; diff --git a/fixtures/devtools/shell/app/DeeplyNestedComponents/index.js b/fixtures/devtools/shell/app/DeeplyNestedComponents/index.js index ad4468d2eb1dc..16afd4cec8596 100644 --- a/fixtures/devtools/shell/app/DeeplyNestedComponents/index.js +++ b/fixtures/devtools/shell/app/DeeplyNestedComponents/index.js @@ -1,6 +1,6 @@ // @flow -import React, { Fragment } from 'react'; +import React, {Fragment} from 'react'; function wrapWithHoc(Component, index) { function HOC() { diff --git a/fixtures/devtools/shell/app/EditableProps/index.js b/fixtures/devtools/shell/app/EditableProps/index.js index f5a39fc92f973..5382a09ac5d6e 100644 --- a/fixtures/devtools/shell/app/EditableProps/index.js +++ b/fixtures/devtools/shell/app/EditableProps/index.js @@ -13,20 +13,20 @@ import React, { useState, } from 'react'; -const initialData = { foo: 'FOO', bar: 'BAR' }; +const initialData = {foo: 'FOO', bar: 'BAR'}; function reducer(state, action) { switch (action.type) { case 'swap': - return { foo: state.bar, bar: state.foo }; + return {foo: state.bar, bar: state.foo}; default: throw new Error(); } } -type StatefulFunctionProps = {| name: string |}; +type StatefulFunctionProps = {|name: string|}; -function StatefulFunction({ name }: StatefulFunctionProps) { +function StatefulFunction({name}: StatefulFunctionProps) { const [count, updateCount] = useState(0); const debouncedCount = useDebounce(count, 1000); const handleUpdateCountClick = useCallback(() => updateCount(count + 1), [ @@ -35,7 +35,7 @@ function StatefulFunction({ name }: StatefulFunctionProps) { const [data, dispatch] = useReducer(reducer, initialData); const handleUpdateReducerClick = useCallback( - () => dispatch({ type: 'swap' }), + () => dispatch({type: 'swap'}), [] ); @@ -60,8 +60,8 @@ function StatefulFunction({ name }: StatefulFunctionProps) { const BoolContext = createContext(true); BoolContext.displayName = 'BoolContext'; -type Props = {| name: string, toggle: boolean |}; -type State = {| cities: Array, state: string |}; +type Props = {|name: string, toggle: boolean|}; +type State = {|cities: Array, state: string|}; class StatefulClass extends Component { static contextType = BoolContext; @@ -71,7 +71,7 @@ class StatefulClass extends Component { state: 'California', }; - handleChange = ({ target }) => + handleChange = ({target}) => this.setState({ state: target.value, }); @@ -94,8 +94,8 @@ class StatefulClass extends Component { const MemoizedStatefulClass = memo(StatefulClass); const MemoizedStatefulFunction = memo(StatefulFunction); -const ForwardRef = forwardRef<{| name: string |}, HTMLUListElement>( - ({ name }, ref) => { +const ForwardRef = forwardRef<{|name: string|}, HTMLUListElement>( + ({name}, ref) => { const [count, updateCount] = useState(0); const debouncedCount = useDebounce(count, 1000); const handleUpdateCountClick = useCallback(() => updateCount(count + 1), [ diff --git a/fixtures/devtools/shell/app/Hydration/index.js b/fixtures/devtools/shell/app/Hydration/index.js index bf0cd66a527a2..8fd2f31a1376c 100644 --- a/fixtures/devtools/shell/app/Hydration/index.js +++ b/fixtures/devtools/shell/app/Hydration/index.js @@ -1,6 +1,6 @@ // @flow -import React, { Fragment, useDebugValue, useState } from 'react'; +import React, {Fragment, useDebugValue, useState} from 'react'; const div = document.createElement('div'); const exmapleFunction = () => {}; @@ -110,7 +110,7 @@ export default function Hydration() { ); } -function DehydratableProps({ array, object }: any) { +function DehydratableProps({array, object}: any) { return (
  • array: {JSON.stringify(array, null, 2)}
  • diff --git a/fixtures/devtools/shell/app/Iframe/index.js b/fixtures/devtools/shell/app/Iframe/index.js index 8e4967ae5aca2..394b0d680f9c4 100644 --- a/fixtures/devtools/shell/app/Iframe/index.js +++ b/fixtures/devtools/shell/app/Iframe/index.js @@ -1,6 +1,6 @@ /** @flow */ -import React, { Fragment } from 'react'; +import React, {Fragment} from 'react'; import ReactDOM from 'react-dom'; export default function Iframe() { @@ -16,7 +16,7 @@ export default function Iframe() { ); } -const iframeStyle = { border: '2px solid #eee', height: 80 }; +const iframeStyle = {border: '2px solid #eee', height: 80}; function Frame(props) { const [element, setElement] = React.useState(null); diff --git a/fixtures/devtools/shell/app/InspectableElements/Contexts.js b/fixtures/devtools/shell/app/InspectableElements/Contexts.js index 65e35d46068ea..08c380dc0c2d0 100644 --- a/fixtures/devtools/shell/app/InspectableElements/Contexts.js +++ b/fixtures/devtools/shell/app/InspectableElements/Contexts.js @@ -1,6 +1,6 @@ // @flow -import React, { createContext, Component, Fragment, useContext } from 'react'; +import React, {createContext, Component, Fragment, useContext} from 'react'; import PropTypes from 'prop-types'; function someNamedFunction() {} @@ -10,7 +10,7 @@ const contextData = { bool: true, func: someNamedFunction, number: 123, - object: { outer: { inner: {} } }, + object: {outer: {inner: {}}}, string: 'abc', symbol: Symbol.for('symbol'), null: null, diff --git a/fixtures/devtools/shell/app/InspectableElements/CustomHooks.js b/fixtures/devtools/shell/app/InspectableElements/CustomHooks.js index 56eea075d1005..bf50de23a7bb8 100644 --- a/fixtures/devtools/shell/app/InspectableElements/CustomHooks.js +++ b/fixtures/devtools/shell/app/InspectableElements/CustomHooks.js @@ -17,7 +17,7 @@ const object = { null: null, undefined: undefined, array: ['a', 'b', 'c'], - object: { foo: 1, bar: 2, baz: 3 }, + object: {foo: 1, bar: 2, baz: 3}, }; function useNestedInnerHook() { diff --git a/fixtures/devtools/shell/app/InspectableElements/InspectableElements.js b/fixtures/devtools/shell/app/InspectableElements/InspectableElements.js index 8917b33037351..ace2a68c55641 100644 --- a/fixtures/devtools/shell/app/InspectableElements/InspectableElements.js +++ b/fixtures/devtools/shell/app/InspectableElements/InspectableElements.js @@ -1,6 +1,6 @@ // @flow -import React, { Fragment } from 'react'; +import React, {Fragment} from 'react'; import Contexts from './Contexts'; import CustomHooks from './CustomHooks'; import CustomObject from './CustomObject'; diff --git a/fixtures/devtools/shell/app/InspectableElements/NestedProps.js b/fixtures/devtools/shell/app/InspectableElements/NestedProps.js index d6f5a804eb695..7927307bc8b50 100644 --- a/fixtures/devtools/shell/app/InspectableElements/NestedProps.js +++ b/fixtures/devtools/shell/app/InspectableElements/NestedProps.js @@ -22,7 +22,7 @@ export default function ObjectProps() { }} array={['first', 'second', 'third']} objectInArray={[object]} - arrayInObject={{ array: ['first', 'second', 'third'] }} + arrayInObject={{array: ['first', 'second', 'third']}} deepObject={{ // Known limitation: we won't go deeper than several levels. // In the future, we might offer a way to request deeper access on demand. diff --git a/fixtures/devtools/shell/app/InteractionTracing/index.js b/fixtures/devtools/shell/app/InteractionTracing/index.js index d062f976f9613..1254cc8c102ce 100644 --- a/fixtures/devtools/shell/app/InteractionTracing/index.js +++ b/fixtures/devtools/shell/app/InteractionTracing/index.js @@ -1,7 +1,7 @@ // @flow -import React, { Fragment, useCallback, useEffect, useState } from 'react'; -import { unstable_batchedUpdates as batchedUpdates } from 'react-dom'; +import React, {Fragment, useCallback, useEffect, useState} from 'react'; +import {unstable_batchedUpdates as batchedUpdates} from 'react-dom'; import { unstable_trace as trace, unstable_wrap as wrap, @@ -11,54 +11,66 @@ export default function InteractionTracing() { const [count, setCount] = useState(0); const [shouldCascade, setShouldCascade] = useState(false); - const handleUpdate = useCallback(() => { - trace('count', performance.now(), () => { - setTimeout( - wrap(() => { - setCount(count + 1); - }), - count * 100 - ); - }); - }, [count]); - - const handleCascadingUpdate = useCallback(() => { - trace('cascade', performance.now(), () => { - setTimeout( - wrap(() => { - batchedUpdates(() => { + const handleUpdate = useCallback( + () => { + trace('count', performance.now(), () => { + setTimeout( + wrap(() => { setCount(count + 1); - setShouldCascade(true); - }); - }), - count * 100 - ); - }); - }, [count]); + }), + count * 100 + ); + }); + }, + [count] + ); - const handleMultiple = useCallback(() => { - trace('first', performance.now(), () => { - trace('second', performance.now(), () => { + const handleCascadingUpdate = useCallback( + () => { + trace('cascade', performance.now(), () => { setTimeout( wrap(() => { - setCount(count + 1); + batchedUpdates(() => { + setCount(count + 1); + setShouldCascade(true); + }); }), count * 100 ); }); - }); - }, [count]); + }, + [count] + ); - useEffect(() => { - if (shouldCascade) { - setTimeout( - wrap(() => { - setShouldCascade(false); - }), - count * 100 - ); - } - }, [count, shouldCascade]); + const handleMultiple = useCallback( + () => { + trace('first', performance.now(), () => { + trace('second', performance.now(), () => { + setTimeout( + wrap(() => { + setCount(count + 1); + }), + count * 100 + ); + }); + }); + }, + [count] + ); + + useEffect( + () => { + if (shouldCascade) { + setTimeout( + wrap(() => { + setShouldCascade(false); + }), + count * 100 + ); + } + }, + [count, shouldCascade] + ); return ( diff --git a/fixtures/devtools/shell/app/PriorityLevels/index.js b/fixtures/devtools/shell/app/PriorityLevels/index.js index 28884519809b7..db0d086e4d2b9 100644 --- a/fixtures/devtools/shell/app/PriorityLevels/index.js +++ b/fixtures/devtools/shell/app/PriorityLevels/index.js @@ -1,6 +1,6 @@ // @flow -import React, { Fragment, useCallback, useState } from 'react'; +import React, {Fragment, useCallback, useState} from 'react'; import { unstable_IdlePriority as IdlePriority, unstable_LowPriority as LowPriority, diff --git a/fixtures/devtools/shell/app/ReactNativeWeb/index.js b/fixtures/devtools/shell/app/ReactNativeWeb/index.js index 7e2e27ede730c..0cdd3f361a1c2 100644 --- a/fixtures/devtools/shell/app/ReactNativeWeb/index.js +++ b/fixtures/devtools/shell/app/ReactNativeWeb/index.js @@ -1,7 +1,7 @@ // @flow -import React, { Fragment, useState } from 'react'; -import { Button, Text, View } from 'react-native-web'; +import React, {Fragment, useState} from 'react'; +import {Button, Text, View} from 'react-native-web'; export default function ReactNativeWeb() { const [backgroundColor, setBackgroundColor] = useState('blue'); @@ -17,13 +17,13 @@ export default function ReactNativeWeb() { '\u0623\u062D\u0628 \u0627\u0644\u0644\u063A\u0629 \u0627\u0644\u0639\u0631\u0628\u064A\u0629 auto (default) - arabic RTL' } - + left left left left left left left left left left left left left left left