Skip to content

feat: [UEPR-56] Migrate to React 18 #139

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 43 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
2ce63b4
chore: [UEPR-56] update react-intl library
MiroslavDionisiev Jan 17, 2025
4819872
fix: [UEPR-56] fix unit tests
Bogomil-Stoyanov Jan 20, 2025
3fccb4c
refactor: [UEPR-56]changes to library versions
Bogomil-Stoyanov Jan 28, 2025
413c700
refactor: [UEPR-56]removed a change in webpack
Bogomil-Stoyanov Jan 28, 2025
2d00b0a
refactor: [UEPR-56]changed peer dependencies
Bogomil-Stoyanov Jan 28, 2025
5a686e9
refactor: [UEPR-56] updated library versions
Bogomil-Stoyanov Jan 29, 2025
5f8ba3f
refactor: [UEPR-56] removed react-contextmenu dependency, changed rea…
Bogomil-Stoyanov Jan 29, 2025
97cf6b2
refactor: [UEPR-56] trying to make all libs use react 18
Bogomil-Stoyanov Jan 30, 2025
cbb94f5
refactor: [UEPR-56] all libs now use react18
Bogomil-Stoyanov Jan 30, 2025
7622534
refactor: [UEPR-56] moved to createRoot
Bogomil-Stoyanov Jan 30, 2025
d7667a6
refactor: [UEPR-56] added radixui context menu
Bogomil-Stoyanov Jan 31, 2025
bb37cbb
refactor: [UEPR-56] fixed paint problem
Bogomil-Stoyanov Jan 31, 2025
383bbaa
feat: [UEPR-56] Work in progress - change context menu
Bogomil-Stoyanov Feb 3, 2025
f19cc45
feat: [UEPR-56] Styled context menu in sprite selector
Bogomil-Stoyanov Feb 3, 2025
d7878c2
feat: [UEPR-56] Fixed style name
Bogomil-Stoyanov Feb 3, 2025
c728b58
feat: [UEPR-56] Renaming styles
Bogomil-Stoyanov Feb 4, 2025
0359484
feat: [UEPR-56] Fixed menu dropdown
Bogomil-Stoyanov Feb 4, 2025
201bcc6
feat: [UEPR-56] Context menu in monitor.jsx
Bogomil-Stoyanov Feb 5, 2025
864c803
feat: [UEPR-56] Styled context menu
Bogomil-Stoyanov Feb 5, 2025
ab18b12
feat: [UEPR-56] Code format changes
Bogomil-Stoyanov Feb 5, 2025
7d23786
feat: [UEPR-56] trying to fix eslint
Bogomil-Stoyanov Feb 5, 2025
d3bc285
Merge remote-tracking branch 'origin/develop' into HEAD
KManolov3 Feb 6, 2025
133c056
feat: [UEPR-56] Rewriting tests in progress
Bogomil-Stoyanov Feb 6, 2025
0be9086
feat: fix order of peer dependencies in package.json
KManolov3 Feb 6, 2025
5b4ea33
feat: fix react-intl usage in delete confirmation prompt
KManolov3 Feb 6, 2025
7e27b9b
fix: update type of reducer
KManolov3 Feb 6, 2025
0406ca8
fix: make shared-messages a .ts file and ensure its type is resolved
KManolov3 Feb 6, 2025
f68d0df
fix: declare empty type file for scratch-paint
KManolov3 Feb 6, 2025
077c4c7
fix: eslint errors
KManolov3 Feb 6, 2025
d97c754
Merge remote-tracking branch 'kalo/uepr-56-react-18' into uepr56-react18
Bogomil-Stoyanov Feb 7, 2025
3e43a75
feat: [UEPR-56] Unit tests - error hoc, controls, menu bar WIP
Bogomil-Stoyanov Feb 7, 2025
c8bd70d
feat: [UEPR-56] Unit tests - menubar, monitor, sound editor
Bogomil-Stoyanov Feb 7, 2025
22f7649
feat: [UEPR-56] Unit tests - sound editor, sprite selector
Bogomil-Stoyanov Feb 10, 2025
9cbab8a
feat: [UEPR-56] Unit tests - sound editor, sprite selector item, togg…
Bogomil-Stoyanov Feb 10, 2025
8e1050e
feat: [UEPR-56] Unit tests - slider-prompt, sound editor, sprite sele…
Bogomil-Stoyanov Feb 11, 2025
2f6d5a4
refactor: [UEPR-56] migrated unit tests to use react testing library
MiroslavDionisiev Feb 17, 2025
d812cc8
fix: disable import/no-unresolved for context-menu library
MiroslavDionisiev Feb 17, 2025
70fdf97
fix: [UEPR-56] fix failing integration tests after context menu libra…
MiroslavDionisiev Feb 18, 2025
18da2f1
feat: [UEPR-56] allow for interactions outside of open context menu
MiroslavDionisiev Feb 18, 2025
6f1b6a1
fix: [UEPR-56] remove pointer events style
MiroslavDionisiev Feb 18, 2025
632b455
fix: [UEPR-56] add check if the component assigned to the ref is unde…
MiroslavDionisiev Feb 20, 2025
5998b3a
chore: [UEPR-56] re-export radix-ui library
MiroslavDionisiev Feb 20, 2025
fa5ecab
Merge remote-tracking branch 'upstream/develop' into HEAD
KManolov3 Apr 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11,490 changes: 5,132 additions & 6,358 deletions package-lock.json

Large diffs are not rendered by default.

36 changes: 19 additions & 17 deletions packages/scratch-gui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,11 @@
},
"dependencies": {
"@microbit/microbit-universal-hex": "0.2.2",
"@radix-ui/react-context-menu": "^2.2.5",
"@scratch/scratch-render": "11.0.0",
"@scratch/scratch-svg-renderer": "11.0.0",
"@scratch/scratch-vm": "11.0.0",
"@testing-library/user-event": "^14.6.1",
"arraybuffer-loader": "1.0.8",
"autoprefixer": "9.8.8",
"balance-text": "3.3.1",
Expand Down Expand Up @@ -81,22 +83,21 @@
"prop-types": "15.8.1",
"query-string": "5.1.1",
"raw-loader": "4.0.2",
"react-contextmenu": "2.14.0",
"react-draggable": "3.3.2",
"react-ga": "2.7.0",
"react-intl": "2.9.0",
"react-ga": "^3.3.1",
"react-intl": "6.8.9",
"react-modal": "3.16.3",
"react-popover": "0.5.10",
"react-responsive": "5.0.0",
"react-responsive": "9.0.0",
"react-style-proptype": "3.2.2",
"react-tabs": "2.3.1",
"react-tabs": "^5.2.0",
"react-tooltip": "4.5.1",
"react-virtualized": "9.22.6",
"redux-throttle": "0.1.1",
"scratch-audio": "2.0.111",
"scratch-blocks": "1.1.206",
"scratch-l10n": "5.0.189",
"scratch-paint": "3.0.199",
"scratch-paint": "github:Bogomil-Stoyanov/scratch-paint#origin/feature/uepr63-react-18",
"scratch-render-fonts": "1.0.180",
"scratch-storage": "4.0.98",
"startaudiocontext": "1.2.1",
Expand All @@ -106,10 +107,10 @@
"xhr": "2.6.0"
},
"peerDependencies": {
"react": "^16.0.0",
"react-dom": "^16.0.0",
"react-redux": "^5.0.7",
"redux": "^3.7.2"
"react": "^18.0.0",
"react-dom": "^18.0.0",
"react-redux": "^8.0.0",
"redux": "^4.0.0"
},
"devDependencies": {
"@babel/cli": "7.27.0",
Expand All @@ -120,6 +121,8 @@
"@babel/plugin-transform-async-to-generator": "7.25.9",
"@babel/preset-env": "7.26.9",
"@babel/preset-react": "7.26.3",
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^14.0.0",
"@types/prop-types": "15.7.14",
"@types/react-modal": "3.16.3",
"@typescript-eslint/eslint-plugin": "8.7.0",
Expand All @@ -128,8 +131,6 @@
"babel-loader": "9.2.1",
"cheerio": "1.0.0-rc.3",
"cross-env": "7.0.3",
"enzyme": "3.11.0",
"enzyme-adapter-react-16": "1.15.8",
"eslint": "8.57.1",
"eslint-config-scratch": "9.0.9",
"eslint-import-resolver-webpack": "0.11.1",
Expand All @@ -142,9 +143,7 @@
"jest": "21.2.1",
"jest-junit": "7.0.0",
"raf": "3.4.1",
"react": "16.14.0",
"react-dom": "16.14.0",
"react-test-renderer": "16.14.0",
"react-test-renderer": "18.2.0",
"redux-mock-store": "1.5.5",
"rimraf": "2.7.1",
"scratch-semantic-release-config": "3.0.0",
Expand All @@ -169,8 +168,7 @@
}
},
"setupFiles": [
"raf/polyfill",
"<rootDir>/test/helpers/enzyme-setup.js"
"raf/polyfill"
],
"reporters": [
"default",
Expand All @@ -181,6 +179,7 @@
}
]
],
"testEnvironment": "jsdom",
"testPathIgnorePatterns": [
"src/test.js"
],
Expand All @@ -189,6 +188,9 @@
"\\.(css|less)$": "<rootDir>/test/__mocks__/styleMock.js",
"editor-msgs(\\.js)?$": "<rootDir>/test/__mocks__/editor-msgs-mock.js"
},
"transformIgnorePatterns": [
"/node_modules/(?!intl-messageformat|intl-messageformat-parser).+\\.js$"
],
"moduleFileExtensions": [
"ts",
"js",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ const InlineMessageComponent = ({
}) => (
<div
className={classNames(styles.inlineMessage, styles[level])}
aria-label="inline message"
>
{/* TODO: implement Rtl handling */}
{iconSpinner && (
Expand Down
169 changes: 85 additions & 84 deletions packages/scratch-gui/src/components/backpack/backpack.jsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import {FormattedMessage, defineMessages, injectIntl, intlShape} from 'react-intl';
import {FormattedMessage, defineMessages, useIntl} from 'react-intl';
import DragConstants from '../../lib/drag-constants';
import {ComingSoonTooltip} from '../coming-soon/coming-soon.jsx';
import SpriteSelectorItem from '../../containers/sprite-selector-item.jsx';
Expand Down Expand Up @@ -47,111 +47,113 @@ const Backpack = ({
dragOver,
error,
expanded,
intl,
loading,
showMore,
onToggle,
onDelete,
onMouseEnter,
onMouseLeave,
onMore
}) => (
<div className={styles.backpackContainer}>
<div
className={styles.backpackHeader}
onClick={onToggle}
>
{onToggle ? (
<FormattedMessage
defaultMessage="Backpack"
description="Button to open the backpack"
id="gui.backpack.header"
/>
) : (
<ComingSoonTooltip
place="top"
tooltipId="backpack-tooltip"
>
}) => {
const intl = useIntl();
return (
<div className={styles.backpackContainer}>
<div
className={styles.backpackHeader}
onClick={onToggle}
>
{onToggle ? (
<FormattedMessage
defaultMessage="Backpack"
description="Button to open the backpack"
id="gui.backpack.header"
/>
</ComingSoonTooltip>
)}
</div>
{expanded ? (
<div
className={classNames(styles.backpackList, {
[styles.dragOver]: dragOver || blockDragOver
})}
ref={containerRef}
onMouseEnter={onMouseEnter}
onMouseLeave={onMouseLeave}
>
{error ? (
<div className={styles.statusMessage}>
) : (
<ComingSoonTooltip
place="top"
tooltipId="backpack-tooltip"
>
<FormattedMessage
defaultMessage="Error loading backpack"
description="Error backpack message"
id="gui.backpack.errorBackpack"
defaultMessage="Backpack"
description="Button to open the backpack"
id="gui.backpack.header"
/>
</div>
) : (
loading ? (
</ComingSoonTooltip>
)}
</div>
{expanded ? (
<div
className={classNames(styles.backpackList, {
[styles.dragOver]: dragOver || blockDragOver
})}
ref={containerRef}
onMouseEnter={onMouseEnter}
onMouseLeave={onMouseLeave}
>
{error ? (
<div className={styles.statusMessage}>
<FormattedMessage
defaultMessage="Loading..."
description="Loading backpack message"
id="gui.backpack.loadingBackpack"
defaultMessage="Error loading backpack"
description="Error backpack message"
id="gui.backpack.errorBackpack"
/>
</div>
) : (
contents.length > 0 ? (
<div className={styles.backpackListInner}>
{contents.map(item => (
<SpriteSelectorItem
className={styles.backpackItem}
costumeURL={item.thumbnailUrl}
details={item.name}
dragPayload={item}
dragType={dragTypeMap[item.type]}
id={item.id}
key={item.id}
name={intl.formatMessage(labelMap[item.type])}
selected={false}
onClick={noop}
onDeleteButtonClick={onDelete}
/>
))}
{showMore && (
<button
className={styles.more}
onClick={onMore}
>
<FormattedMessage
defaultMessage="More"
description="Load more from backpack"
id="gui.backpack.more"
/>
</button>
)}
</div>
) : (
loading ? (
<div className={styles.statusMessage}>
<FormattedMessage
defaultMessage="Backpack is empty"
description="Empty backpack message"
id="gui.backpack.emptyBackpack"
defaultMessage="Loading..."
description="Loading backpack message"
id="gui.backpack.loadingBackpack"
/>
</div>
) : (
contents.length > 0 ? (
<div className={styles.backpackListInner}>
{contents.map(item => (
<SpriteSelectorItem
className={styles.backpackItem}
costumeURL={item.thumbnailUrl}
details={item.name}
dragPayload={item}
dragType={dragTypeMap[item.type]}
id={item.id}
key={item.id}
name={intl.formatMessage(labelMap[item.type])}
selected={false}
onClick={noop}
onDeleteButtonClick={onDelete}
/>
))}
{showMore && (
<button
className={styles.more}
onClick={onMore}
>
<FormattedMessage
defaultMessage="More"
description="Load more from backpack"
id="gui.backpack.more"
/>
</button>
)}
</div>
) : (
<div className={styles.statusMessage}>
<FormattedMessage
defaultMessage="Backpack is empty"
description="Empty backpack message"
id="gui.backpack.emptyBackpack"
/>
</div>
)
)
)
)}
</div>
) : null}
</div>
);
)}
</div>
) : null}
</div>
);
};

Backpack.propTypes = {
blockDragOver: PropTypes.bool,
Expand All @@ -165,7 +167,6 @@ Backpack.propTypes = {
dragOver: PropTypes.bool,
error: PropTypes.bool,
expanded: PropTypes.bool,
intl: intlShape,
loading: PropTypes.bool,
onDelete: PropTypes.func,
onMore: PropTypes.func,
Expand All @@ -186,4 +187,4 @@ Backpack.defaultProps = {
onToggle: null
};

export default injectIntl(Backpack);
export default Backpack;
Loading