Commit efebd0b411 for woocommerce

commit efebd0b41155d170d05d4c2fa469dc82dc23f7dd
Author: Rostislav Wolný <1082140+costasovo@users.noreply.github.com>
Date:   Wed Jun 18 17:24:10 2025 +0200

    Email Editor - prepare JS package (#58874)

    * Update build to be aligned with other packages in the monorepo

    WOOPLUG-3653

    * Update the integration code in the Woo plugin to work with the updated build

    WOOPLUG-3653

    * Remove css imports from email editor compoents

    This doesn't work after we aligned Woo packages builds.
    We no longer have webpack plugin for that.
    We build css directly from styles.scss.
    WOOPLUG-3653

    * Extend the common tsconfig.json in the email editor tsconfig.json

    I kept our config for rules and I chose to use
    "jsx": "react-jsx" which is more modern option, which can be used
    with React 17+. We don't need to import react to every component
    with "jsx": "react-jsx" it is added automatically.
    WOOPLUG-3653

    * Reintroduce prettier to the email editor

    It was removed in the big update of configs in the first commit.
    WOOPLUG-3653

    * Export initializeEditor function instead of starting the editor as a sideeffect

    WOOPLUG-3653

    * Reintroduce stylelint

    WOOPLUG-3653

    * Sync dependencies in the monorepo

    WOOPLUG-3653

    * Update the editor package's readme.md

    WOOPLUG-3653

    * Rename composer project in JS package

    WOOPLUG-3653

    * Refactor filters so that they are not used as a side effect

    When a filter is used as a side effect, it sets a requirement that an integrator has to
    hook into the filter before the editor JS file is loaded.

    This requirement makes it harder for integrators to register their hooks.

    This commit refactors all usages of applyFilter that they are no longer called
    as side effects.
    WOOPLUG-3653

    * Add changelogs

    WOOPLUG-3653

    * Skip copying rich-text.js asset

    We don't modify it so it makes no sense to copy as we can include it directly.
    We will remove this asset when we stop supporting WP 6.7
    WOOPLUG-3653

    * Cleanup devDependencies

    These depedencies are provided by @woocommerce/internal-style-build
    WOOPLUG-3653

    * Monorepo: adjustments to email-editor build.

    * Install email-editor deps after rebase

    WOOPLUG-3653

    ---------

    Co-authored-by: Vladimir Reznichenko <kalessil@gmail.com>

diff --git a/packages/js/email-editor/README.md b/packages/js/email-editor/README.md
index f850e5d7dd..5c3874ca52 100644
--- a/packages/js/email-editor/README.md
+++ b/packages/js/email-editor/README.md
@@ -1,11 +1,43 @@
 # WooCommerce Email Editor

-This folder contains the code for the WooCommerce Email Editor JS Package.
-We aim to extract the package as an independent library, so it can be used in other projects.
+This is the WooCommerce Email Editor package - a JavaScript library for building and customizing email templates. While currently integrated with WooCommerce, this package is designed to be used as an independent library in other projects.

 You can try the email editor in [the WordPress Playground](https://playground.wordpress.net/?blueprint-url=https://raw.githubusercontent.com/woocommerce/woocommerce/refs/heads/trunk/packages/js/email-editor/blueprint.json).

-You can locate the PHP package here `packages/php/email-editor`
+This JavaScript package is designed to work in conjunction with its PHP counterpart, which can be found in the same repository at `packages/php/email-editor`. Both packages are required for full functionality.
+
+## Initializing the editor
+
+> **Note:** The `initializeEditor` function is currently experimental and its API is subject to change in future releases. Please be aware that breaking changes may occur.
+
+To use the email editor in your project, you'll need to initialize it using the `initializeEditor` function. The editor requires certain data to be set on the global `window.WooCommerceEmailEditor` object before initialization:
+
+```javascript
+// First, set up the required data on the window object
+window.WooCommerceEmailEditor = {
+    current_post_type: '', // The post type of the current post
+    current_post_id: '', // The ID of the current post
+    current_wp_user_email: '', // The email of the current user
+    editor_settings: {}, // The block editor settings
+    editor_theme: {}, // The block editor theme
+    user_theme_post_id: '', // The ID of the user theme post
+    urls: {
+        listings: '', // optional: The URL for the listings page
+        send: '', // optional: The URL for the send button
+        back: '' // optional: The URL for the back button (top left corner)
+    }
+};
+
+// Then initialize the editor with the HTML element ID
+import { initializeEditor } from '@woocommerce/email-editor';
+initializeEditor('email-editor-container');
+```
+
+The `initializeEditor` function accepts a single parameter:
+
+- `htmlId` (required): The ID of the HTML element where the editor will be mounted
+
+Make sure to set up the required data on `window.WooCommerceEmailEditor` before calling `initializeEditor`.

 ## Workflow Commands

diff --git a/packages/js/email-editor/changelog/wooplug-3653-configure-build-and-publishing-of-the-email-editors-js b/packages/js/email-editor/changelog/wooplug-3653-configure-build-and-publishing-of-the-email-editors-js
new file mode 100644
index 0000000000..9d57b75a96
--- /dev/null
+++ b/packages/js/email-editor/changelog/wooplug-3653-configure-build-and-publishing-of-the-email-editors-js
@@ -0,0 +1,4 @@
+Significance: major
+Type: update
+
+Refactor the package and its build to be prepared for publishing
diff --git a/packages/js/email-editor/composer.json b/packages/js/email-editor/composer.json
index 0293102677..7b56d5eef8 100644
--- a/packages/js/email-editor/composer.json
+++ b/packages/js/email-editor/composer.json
@@ -1,5 +1,5 @@
 {
-	"name": "woocommerce/email-editor-js-config",
+	"name": "woocommerce/email-editor-config",
 	"description": "Email editor based on WordPress Gutenberg package.",
 	"type": "library",
 	"license": "GPL-3.0-or-later",
diff --git a/packages/js/email-editor/package.json b/packages/js/email-editor/package.json
index aa2cb75fda..4b590e0796 100644
--- a/packages/js/email-editor/package.json
+++ b/packages/js/email-editor/package.json
@@ -18,45 +18,46 @@
 		"url": "https://github.com/woocommerce/woocommerce/issues"
 	},
 	"main": "build/index.js",
-	"publishConfig": {
-		"access": "public"
-	},
+	"module": "build-module/index.js",
+	"types": "build-types",
 	"files": [
 		"build",
+		"build-module",
+		"build-style",
+		"build-types",
 		"assets"
 	],
 	"sideEffects": [
-		"build/**/*.css",
+		"build-style/**",
 		"src/**/*.scss"
 	],
 	"scripts": {
-		"start": "wp-scripts start",
-		"lint:css": "wp-scripts lint-style",
-		"lint:css-fix": "wp-scripts lint-style --fix",
-		"lint:js": "wp-scripts lint-js './src/**/*.{js,jsx,json,ts,tsx,yml,yaml}'",
-		"lint:js-fix": "wp-scripts lint-js './src/**/*.{js,jsx,json,ts,tsx}' --fix",
-		"format": "./node_modules/.bin/prettier --config .prettierrc.js --write 'src/**/*.{js,jsx,json,ts,tsx,yml,yaml,scss}'",
 		"build": "pnpm --if-present --workspace-concurrency=Infinity --stream --filter=\"$npm_package_name...\" '/^build:project:.*$/'",
 		"build:project": "pnpm --if-present '/^build:project:.*$/'",
-		"build:project:editor": "wireit",
-		"lint": "pnpm --if-present '/^lint:lang:.*$/'",
-		"lint:fix": "pnpm --if-present '/^lint:fix:lang:.*$/'",
-		"lint:fix:lang:js": "pnpm lint:js-fix",
-		"lint:fix:lang:css": "pnpm lint:css-fix",
-		"lint:lang:js": "pnpm lint:js",
-		"lint:lang:css": "pnpm lint:css",
-		"lint:lang:types": "NODE_OPTIONS=--max_old_space_size=2048 tsc --noEmit",
+		"build:project:bundle": "wireit",
+		"build:project:cjs": "wireit",
+		"build:project:esm": "wireit",
+		"changelog": "XDEBUG_MODE=off composer install --quiet && composer exec -- changelogger",
+		"format": "prettier --write 'src/**/*.{js,jsx,json,ts,tsx,yml,yaml,scss}'",
+		"format:check": "prettier --check 'src/**/*.{js,jsx,json,ts,tsx,yml,yaml,scss}'",
+		"lint": "pnpm --if-present '/^lint:lang:.*$/' && pnpm format:check && pnpm lint:lang:style",
+		"lint:fix": "pnpm --if-present '/^lint:fix:lang:.*$/' && pnpm format && pnpm lint:fix:lang:style",
+		"lint:fix:lang:js": "eslint --ext=js,ts,tsx src --fix",
+		"lint:fix:lang:style": "stylelint 'src/**/*.{css,scss}' --fix",
+		"lint:lang:js": "eslint --ext=js,ts,tsx src",
+		"lint:lang:style": "stylelint 'src/**/*.{css,scss}'",
 		"prepack": "pnpm build",
 		"test:js": "jest --config ./jest.config.json --passWithNoTests",
 		"watch:build": "pnpm --if-present --workspace-concurrency=Infinity --filter=\"$npm_package_name...\" --parallel '/^watch:build:project:.*$/'",
 		"watch:build:project": "pnpm --if-present run '/^watch:build:project:.*$/'",
-		"watch:build:project:editor": "wireit",
-		"changelog": "XDEBUG_MODE=off composer install --quiet && composer exec -- changelogger"
+		"watch:build:project:bundle": "wireit",
+		"watch:build:project:cjs": "wireit",
+		"watch:build:project:esm": "wireit"
 	},
 	"lint-staged": {
 		"*.{js,jsx,json,ts,tsx,yml,yaml,scss}": "pnpm run format",
-		"*.{scss,css}": "pnpm run lint:css",
-		"*.{js,jsx,ts,tsx}": "pnpm run lint:js"
+		"*.{scss,css}": "pnpm run lint:lang:style",
+		"*.{js,jsx,ts,tsx}": "pnpm run lint:lang:js"
 	},
 	"dependencies": {
 		"@wordpress/api-fetch": "wp-6.6",
@@ -111,22 +112,23 @@
 		"@types/wordpress__edit-post": "^7.5.7",
 		"@types/wordpress__editor": "^13.6.8",
 		"@types/wordpress__media-utils": "^4.14.4",
-		"@woocommerce/dependency-extraction-webpack-plugin": "workspace:*",
 		"@woocommerce/eslint-plugin": "workspace:*",
 		"@woocommerce/internal-js-tests": "workspace:*",
+		"@woocommerce/internal-style-build": "workspace:*",
+		"@wordpress/browserslist-config": "next",
 		"@wordpress/prettier-config": "2.17.0",
-		"@wordpress/scripts": "wp-6.6",
-		"@wordpress/stylelint-config": "^21.36.0",
-		"copy-webpack-plugin": "13.0.x",
+		"@wordpress/stylelint-config": "^21.0.0",
+		"eslint": "^8.55.0",
 		"jest": "27.5.x",
 		"jest-cli": "27.5.x",
 		"jest-environment-jsdom": "27.5.x",
-		"prettier": "npm:wp-prettier@^3.0.3",
+		"prettier": "npm:wp-prettier@^2.8.5",
+		"rimraf": "5.0.5",
+		"stylelint": "^14.16.1",
 		"ts-jest": "29.1.x",
 		"ts-loader": "9.5.x",
 		"typescript": "5.7.x",
-		"wireit": "0.14.12",
-		"wp-types": "^3.65.0"
+		"wireit": "0.14.12"
 	},
 	"config": {
 		"ci": {
@@ -155,8 +157,8 @@
 		}
 	},
 	"wireit": {
-		"build:project:editor": {
-			"command": "wp-scripts build",
+		"build:project:bundle": {
+			"command": "webpack",
 			"clean": "if-file-deleted",
 			"env": {
 				"NODE_ENV": {
@@ -166,8 +168,26 @@
 			},
 			"files": [
 				"webpack.config.js",
-				"tsconfig.json",
-				"src/*"
+				"src/**/*.scss"
+			],
+			"output": [
+				"build-style"
+			],
+			"dependencies": [
+				"dependencyOutputs"
+			]
+		},
+		"watch:build:project:bundle": {
+			"command": "webpack --watch",
+			"service": true
+		},
+		"build:project:cjs": {
+			"command": "tsc --project tsconfig-cjs.json --noCheck",
+			"clean": "if-file-deleted",
+			"files": [
+				"tsconfig-cjs.json",
+				"src/**/*.{js,jsx,ts,tsx}",
+				"typings/**/*.ts"
 			],
 			"output": [
 				"build"
@@ -176,22 +196,42 @@
 				"dependencyOutputs"
 			]
 		},
-		"watch:build:project:editor": {
-			"command": "wp-scripts start",
+		"watch:build:project:cjs": {
+			"command": "tsc --project tsconfig-cjs.json --watch --noCheck",
+			"service": true
+		},
+		"build:project:esm": {
+			"command": "tsc --project tsconfig.json",
+			"clean": "if-file-deleted",
+			"files": [
+				"tsconfig.json",
+				"src/**/*.{js,jsx,ts,tsx}",
+				"typings/**/*.ts"
+			],
+			"output": [
+				"build-module",
+				"build-types"
+			],
+			"dependencies": [
+				"dependencyOutputs"
+			]
+		},
+		"watch:build:project:esm": {
+			"command": "tsc --project tsconfig.json --watch",
 			"service": true
 		},
 		"dependencyOutputs": {
 			"allowUsuallyExcludedPaths": true,
 			"files": [
 				"package.json",
-				"node_modules/@woocommerce/dependency-extraction-webpack-plugin/src/",
-				"node_modules/@woocommerce/dependency-extraction-webpack-plugin/assets/",
 				"node_modules/@woocommerce/eslint-plugin/configs",
 				"node_modules/@woocommerce/eslint-plugin/rules",
 				"node_modules/@woocommerce/eslint-plugin/index.js",
 				"node_modules/@woocommerce/internal-js-tests/build",
 				"node_modules/@woocommerce/internal-js-tests/build-module",
-				"node_modules/@woocommerce/internal-js-tests/jest-preset.js"
+				"node_modules/@woocommerce/internal-js-tests/jest-preset.js",
+				"node_modules/@woocommerce/internal-style-build/index.js",
+				"node_modules/@woocommerce/internal-style-build/abstracts"
 			]
 		}
 	}
diff --git a/packages/js/email-editor/src/blocks/core/move-to-trash.tsx b/packages/js/email-editor/src/blocks/core/move-to-trash.tsx
index 0d9095267a..5d68ec9e7c 100644
--- a/packages/js/email-editor/src/blocks/core/move-to-trash.tsx
+++ b/packages/js/email-editor/src/blocks/core/move-to-trash.tsx
@@ -10,14 +10,14 @@ import {
 	registerEntityAction,
 	unregisterEntityAction,
 } from '../../private-apis';
-import trashEmailPost from '../../components/header/trash-email-post';
+import getTrashEmailPostAction from '../../components/header/trash-email-post';

 const removeDefaultMoveToTrashActionAddCustom = ( postType: string ) => {
 	// Remove the default move to trash action.
 	unregisterEntityAction( 'postType', postType, 'move-to-trash' );

 	// Add the custom trash email post action.
-	registerEntityAction( 'postType', postType, trashEmailPost );
+	registerEntityAction( 'postType', postType, getTrashEmailPostAction() );
 };

 function modifyMoveToTrashAction() {
diff --git a/packages/js/email-editor/src/components/header/test/send-button.spec.tsx b/packages/js/email-editor/src/components/header/test/send-button.spec.tsx
index 61cd1d1160..ce3ce53ac7 100644
--- a/packages/js/email-editor/src/components/header/test/send-button.spec.tsx
+++ b/packages/js/email-editor/src/components/header/test/send-button.spec.tsx
@@ -1,5 +1,5 @@
 /* eslint-disable @woocommerce/dependency-group -- because we import mocks first, we deactivate this rule to avoid ESLint errors */
-import '../../__mocks__/setup-shared-mocks';
+import '../../test/__mocks__/setup-shared-mocks';

 /**
  * External dependencies
diff --git a/packages/js/email-editor/src/components/header/trash-email-post.tsx b/packages/js/email-editor/src/components/header/trash-email-post.tsx
index 6e8bde3a07..07150853f9 100644
--- a/packages/js/email-editor/src/components/header/trash-email-post.tsx
+++ b/packages/js/email-editor/src/components/header/trash-email-post.tsx
@@ -22,11 +22,6 @@ import { applyFilters } from '@wordpress/hooks';
 import { storeName, CoreDataError, PostWithPermissions } from '../../store';
 import { recordEvent } from '../../events';

-const shouldPermanentlyDelete = applyFilters(
-	'woocommerce_email_editor_trash_modal_should_permanently_delete',
-	false
-) as boolean;
-
 function getItemTitle( item: {
 	title: string | { rendered: string } | { raw: string };
 } ) {
@@ -42,7 +37,10 @@ function getItemTitle( item: {
 	return '';
 }

-function getModalTitle( items: PostWithPermissions[] ) {
+function getModalTitle(
+	items: PostWithPermissions[],
+	shouldPermanentlyDelete: boolean
+) {
 	if ( shouldPermanentlyDelete ) {
 		return items.length > 1
 			? sprintf(
@@ -86,219 +84,236 @@ function getModalTitle( items: PostWithPermissions[] ) {
 		  );
 }

-/**
- * Trash email post action.
- * A custom action to permanently delete or move to trash email posts.
- * Cloned from core: https://github.com/WordPress/gutenberg/blob/da7adc0975d4736e555c7f81b8820b0cc4439d6c/packages/fields/src/actions/permanently-delete-post.tsx
- */
-const trashEmailPost = {
-	id: 'trash-email-post',
-	label: shouldPermanentlyDelete
-		? __( 'Permanently delete', 'woocommerce' )
-		: __( 'Move to trash', 'woocommerce' ),
-	supportsBulk: true,
-	icon: trash,
-	isEligible( item ) {
-		if (
-			item.type === 'wp_template' ||
-			item.type === 'wp_template_part' ||
-			item.type === 'wp_block'
-		) {
-			return false;
-		}
-		const { permissions } = item;
-		return permissions?.delete;
-	},
-	hideModalHeader: true,
-	modalFocusOnMount: 'firstContentElement',
-	RenderModal: ( { items, closeModal, onActionPerformed } ) => {
-		const [ isBusy, setIsBusy ] = useState( false );
-		const { createSuccessNotice, createErrorNotice } =
-			useDispatch( noticesStore );
-		const { deleteEntityRecord } = useDispatch( coreStore );
-
-		const { urls } = useSelect(
-			( select ) => ( {
-				urls: select( storeName ).getUrls(),
-			} ),
-			[]
-		);
+const getTrashEmailPostAction = () => {
+	const shouldPermanentlyDelete = applyFilters(
+		'woocommerce_email_editor_trash_modal_should_permanently_delete',
+		false
+	) as boolean;

-		const goToListings = () => {
-			if ( urls?.listings ) {
-				window.location.href = urls.listings;
+	/**
+	 * Trash email post action.
+	 * A custom action to permanently delete or move to trash email posts.
+	 * Cloned from core: https://github.com/WordPress/gutenberg/blob/da7adc0975d4736e555c7f81b8820b0cc4439d6c/packages/fields/src/actions/permanently-delete-post.tsx
+	 */
+	const trashEmailPost = {
+		id: 'trash-email-post',
+		label: shouldPermanentlyDelete
+			? __( 'Permanently delete', 'woocommerce' )
+			: __( 'Move to trash', 'woocommerce' ),
+		supportsBulk: true,
+		icon: trash,
+		isEligible( item: PostWithPermissions ) {
+			if (
+				item.type === 'wp_template' ||
+				item.type === 'wp_template_part' ||
+				item.type === 'wp_block'
+			) {
+				return false;
 			}
-		};
+			const { permissions } = item;
+			return permissions?.delete;
+		},
+		hideModalHeader: true,
+		modalFocusOnMount: 'firstContentElement',
+		RenderModal: ( { items, closeModal, onActionPerformed } ) => {
+			const [ isBusy, setIsBusy ] = useState( false );
+			const { createSuccessNotice, createErrorNotice } =
+				useDispatch( noticesStore );
+			const { deleteEntityRecord } = useDispatch( coreStore );
+
+			const { urls } = useSelect(
+				( select ) => ( {
+					urls: select( storeName ).getUrls(),
+				} ),
+				[]
+			);
+
+			const goToListings = () => {
+				if ( urls?.listings ) {
+					window.location.href = urls.listings;
+				}
+			};

-		return (
-			<VStack spacing="5">
-				<Text>{ getModalTitle( items ) }</Text>
-				<HStack justify="right">
-					<Button
-						variant="tertiary"
-						onClick={ () => {
-							closeModal?.();
-							recordEvent( 'trash_modal_cancel_button_clicked' );
-						} }
-						disabled={ isBusy }
-						__next40pxDefaultSize
-					>
-						{ __( 'Cancel', 'woocommerce' ) }
-					</Button>
-					<Button
-						variant="primary"
-						onClick={ async () => {
-							recordEvent(
-								'trash_modal_move_to_trash_button_clicked'
-							);
-							setIsBusy( true );
-							const promiseResult = await Promise.allSettled(
-								items.map( ( post ) =>
-									deleteEntityRecord(
-										'postType',
-										post.type,
-										post.id,
-										{ force: shouldPermanentlyDelete },
-										{ throwOnError: true }
+			return (
+				<VStack spacing="5">
+					<Text>
+						{ getModalTitle( items, shouldPermanentlyDelete ) }
+					</Text>
+					<HStack justify="right">
+						<Button
+							variant="tertiary"
+							onClick={ () => {
+								closeModal?.();
+								recordEvent(
+									'trash_modal_cancel_button_clicked'
+								);
+							} }
+							disabled={ isBusy }
+							__next40pxDefaultSize
+						>
+							{ __( 'Cancel', 'woocommerce' ) }
+						</Button>
+						<Button
+							variant="primary"
+							onClick={ async () => {
+								recordEvent(
+									'trash_modal_move_to_trash_button_clicked'
+								);
+								setIsBusy( true );
+								const promiseResult = await Promise.allSettled(
+									items.map( ( post ) =>
+										deleteEntityRecord(
+											'postType',
+											post.type,
+											post.id,
+											{ force: shouldPermanentlyDelete },
+											{ throwOnError: true }
+										)
 									)
-								)
-							);
+								);

-							// If all the promises were fulfilled with success.
-							if (
-								promiseResult.every(
-									( { status } ) => status === 'fulfilled'
-								)
-							) {
-								let successMessage;
-								if ( promiseResult.length === 1 ) {
-									successMessage = shouldPermanentlyDelete
-										? sprintf(
-												/* translators: The posts's title. */
-												__(
-													'"%s" permanently deleted.',
-													'woocommerce'
-												),
-												getItemTitle( items[ 0 ] )
-										  )
-										: sprintf(
-												/* translators: The item's title. */
-												__(
-													'"%s" moved to the trash.',
-													'woocommerce'
-												),
-												getItemTitle( items[ 0 ] )
-										  );
-								} else {
-									successMessage = shouldPermanentlyDelete
-										? __(
-												'The items were permanently deleted.',
-												'woocommerce'
-										  )
-										: sprintf(
-												/* translators: The number of items. */
-												_n(
-													'%s item moved to the trash.',
-													'%s items moved to the trash.',
-													items.length,
-													'woocommerce'
-												),
-												items.length
-										  );
-								}
-								createSuccessNotice( successMessage, {
-									type: 'snackbar',
-									id: 'trash-email-post-action',
-								} );
-								onActionPerformed?.( items );
-								goToListings();
-							} else {
-								// If there was at lease one failure.
-								let errorMessage;
-								// If we were trying to permanently delete a single post.
-								if ( promiseResult.length === 1 ) {
-									const typedError = promiseResult[ 0 ] as {
-										reason?: CoreDataError;
-									};
-									if ( typedError.reason?.message ) {
-										errorMessage =
-											typedError.reason.message;
+								// If all the promises were fulfilled with success.
+								if (
+									promiseResult.every(
+										( { status } ) => status === 'fulfilled'
+									)
+								) {
+									let successMessage;
+									if ( promiseResult.length === 1 ) {
+										successMessage = shouldPermanentlyDelete
+											? sprintf(
+													/* translators: The posts's title. */
+													__(
+														'"%s" permanently deleted.',
+														'woocommerce'
+													),
+													getItemTitle( items[ 0 ] )
+											  )
+											: sprintf(
+													/* translators: The item's title. */
+													__(
+														'"%s" moved to the trash.',
+														'woocommerce'
+													),
+													getItemTitle( items[ 0 ] )
+											  );
 									} else {
-										errorMessage = __(
-											'An error occurred while performing the action.',
-											'woocommerce'
-										);
+										successMessage = shouldPermanentlyDelete
+											? __(
+													'The items were permanently deleted.',
+													'woocommerce'
+											  )
+											: sprintf(
+													/* translators: The number of items. */
+													_n(
+														'%s item moved to the trash.',
+														'%s items moved to the trash.',
+														items.length,
+														'woocommerce'
+													),
+													items.length
+											  );
 									}
-									// If we were trying to permanently delete multiple posts
+									createSuccessNotice( successMessage, {
+										type: 'snackbar',
+										id: 'trash-email-post-action',
+									} );
+									onActionPerformed?.( items );
+									goToListings();
 								} else {
-									const errorMessages = new Set();
-									const failedPromises = promiseResult.filter(
-										( { status } ) => status === 'rejected'
-									);
-									for ( const failedPromise of failedPromises ) {
-										const typedError = failedPromise as {
-											reason?: CoreDataError;
-										};
+									// If there was at lease one failure.
+									let errorMessage;
+									// If we were trying to permanently delete a single post.
+									if ( promiseResult.length === 1 ) {
+										const typedError =
+											promiseResult[ 0 ] as {
+												reason?: CoreDataError;
+											};
 										if ( typedError.reason?.message ) {
-											errorMessages.add(
-												typedError.reason.message
+											errorMessage =
+												typedError.reason.message;
+										} else {
+											errorMessage = __(
+												'An error occurred while performing the action.',
+												'woocommerce'
 											);
 										}
-									}
-									if ( errorMessages.size === 0 ) {
-										errorMessage = __(
-											'An error occurred while performing the action.',
-											'woocommerce'
-										);
-									} else if ( errorMessages.size === 1 ) {
-										errorMessage = sprintf(
-											/* translators: %s: an error message */
-											__(
-												'An error occurred while performing the action: %s',
-												'woocommerce'
-											),
-											[ ...errorMessages ][ 0 ]
-										);
+										// If we were trying to permanently delete multiple posts
 									} else {
-										errorMessage = sprintf(
-											/* translators: %s: a list of comma separated error messages */
-											__(
-												'Some errors occurred while performing the action: %s',
+										const errorMessages = new Set();
+										const failedPromises =
+											promiseResult.filter(
+												( { status } ) =>
+													status === 'rejected'
+											);
+										for ( const failedPromise of failedPromises ) {
+											const typedError =
+												failedPromise as {
+													reason?: CoreDataError;
+												};
+											if ( typedError.reason?.message ) {
+												errorMessages.add(
+													typedError.reason.message
+												);
+											}
+										}
+										if ( errorMessages.size === 0 ) {
+											errorMessage = __(
+												'An error occurred while performing the action.',
 												'woocommerce'
-											),
-											[ ...errorMessages ].join( ',' )
-										);
+											);
+										} else if ( errorMessages.size === 1 ) {
+											errorMessage = sprintf(
+												/* translators: %s: an error message */
+												__(
+													'An error occurred while performing the action: %s',
+													'woocommerce'
+												),
+												[ ...errorMessages ][ 0 ]
+											);
+										} else {
+											errorMessage = sprintf(
+												/* translators: %s: a list of comma separated error messages */
+												__(
+													'Some errors occurred while performing the action: %s',
+													'woocommerce'
+												),
+												[ ...errorMessages ].join( ',' )
+											);
+										}
 									}
+									recordEvent(
+										'trash_modal_move_to_trash_error',
+										{
+											errorMessage,
+										}
+									);
+									createErrorNotice( errorMessage, {
+										type: 'snackbar',
+									} );
 								}
-								recordEvent(
-									'trash_modal_move_to_trash_error',
-									{
-										errorMessage,
-									}
-								);
-								createErrorNotice( errorMessage, {
-									type: 'snackbar',
-								} );
-							}

-							setIsBusy( false );
-							closeModal?.();
-						} }
-						isBusy={ isBusy }
-						disabled={ isBusy }
-						__next40pxDefaultSize
-					>
-						{ shouldPermanentlyDelete
-							? __( 'Delete permanently', 'woocommerce' )
-							: __( 'Move to trash', 'woocommerce' ) }
-					</Button>
-				</HStack>
-			</VStack>
-		);
-	},
+								setIsBusy( false );
+								closeModal?.();
+							} }
+							isBusy={ isBusy }
+							disabled={ isBusy }
+							__next40pxDefaultSize
+						>
+							{ shouldPermanentlyDelete
+								? __( 'Delete permanently', 'woocommerce' )
+								: __( 'Move to trash', 'woocommerce' ) }
+						</Button>
+					</HStack>
+				</VStack>
+			);
+		},
+	};
+
+	return trashEmailPost;
 };

 /**
  * Delete action for PostWithPermissions.
  */
-export default trashEmailPost;
+export default getTrashEmailPostAction;
diff --git a/packages/js/email-editor/src/components/personalization-tags/link-modal.tsx b/packages/js/email-editor/src/components/personalization-tags/link-modal.tsx
index 1f249d374f..48343269a7 100644
--- a/packages/js/email-editor/src/components/personalization-tags/link-modal.tsx
+++ b/packages/js/email-editor/src/components/personalization-tags/link-modal.tsx
@@ -5,11 +5,6 @@ import { Button, Modal, TextControl } from '@wordpress/components';
 import { __ } from '@wordpress/i18n';
 import { useState } from '@wordpress/element';

-/**
- * Internal dependencies
- */
-import './style.scss';
-
 const LinkModal = ( { onInsert, isOpened, closeCallback, tag } ) => {
 	const [ linkText, setLinkText ] = useState( __( 'Link', 'woocommerce' ) );
 	if ( ! isOpened ) {
diff --git a/packages/js/email-editor/src/components/personalization-tags/personalization-tags-modal.tsx b/packages/js/email-editor/src/components/personalization-tags/personalization-tags-modal.tsx
index b60ab706b8..74cc6e8cff 100644
--- a/packages/js/email-editor/src/components/personalization-tags/personalization-tags-modal.tsx
+++ b/packages/js/email-editor/src/components/personalization-tags/personalization-tags-modal.tsx
@@ -9,7 +9,6 @@ import { useSelect } from '@wordpress/data';
 /**
  * Internal dependencies
  */
-import './style.scss';
 import { CategoryMenu } from './category-menu';
 import { CategorySection } from './category-section';
 import { LinkModal } from './link-modal';
diff --git a/packages/js/email-editor/src/components/personalization-tags/test/category-menu.spec.tsx b/packages/js/email-editor/src/components/personalization-tags/test/category-menu.spec.tsx
index b0068e31d1..fd02a6ee1a 100644
--- a/packages/js/email-editor/src/components/personalization-tags/test/category-menu.spec.tsx
+++ b/packages/js/email-editor/src/components/personalization-tags/test/category-menu.spec.tsx
@@ -1,5 +1,5 @@
 /* eslint-disable @woocommerce/dependency-group -- because we import mocks first, we deactivate this rule to avoid ESLint errors */
-import '../../__mocks__/setup-shared-mocks';
+import '../../test/__mocks__/setup-shared-mocks';

 /**
  * External dependencies
diff --git a/packages/js/email-editor/src/components/personalization-tags/test/category-section.spec.tsx b/packages/js/email-editor/src/components/personalization-tags/test/category-section.spec.tsx
index d52fb19f5b..668e7767b9 100644
--- a/packages/js/email-editor/src/components/personalization-tags/test/category-section.spec.tsx
+++ b/packages/js/email-editor/src/components/personalization-tags/test/category-section.spec.tsx
@@ -1,5 +1,5 @@
 /* eslint-disable @woocommerce/dependency-group -- because we import mocks first, we deactivate this rule to avoid ESLint errors */
-import '../../__mocks__/setup-shared-mocks';
+import '../../test/__mocks__/setup-shared-mocks';

 /**
  * External dependencies
diff --git a/packages/js/email-editor/src/components/preview/send-preview-email.tsx b/packages/js/email-editor/src/components/preview/send-preview-email.tsx
index bd4a1e58ab..1691f4c512 100644
--- a/packages/js/email-editor/src/components/preview/send-preview-email.tsx
+++ b/packages/js/email-editor/src/components/preview/send-preview-email.tsx
@@ -10,6 +10,7 @@ import {
 	useRef,
 	createInterpolateElement,
 	memo,
+	useMemo,
 } from '@wordpress/element';
 import { ENTER } from '@wordpress/keycodes';
 import { isEmail } from '@wordpress/url';
@@ -25,11 +26,6 @@ import {
 } from '../../store';
 import { recordEvent, recordEventOnce } from '../../events';

-const sendingMethodConfigurationLink = applyFilters(
-	'woocommerce_email_editor_check_sending_method_configuration_link',
-	`https://www.mailpoet.com/blog/mailpoet-smtp-plugin/?utm_source=woocommerce_email_editor&utm_medium=plugin&utm_source_platform=${ editorCurrentPostType }`
-) as string;
-
 function RawSendPreviewEmail() {
 	const sendToRef = useRef( null );

@@ -51,6 +47,15 @@ function RawSendPreviewEmail() {
 		void requestSendingNewsletterPreview( previewToEmail );
 	};

+	const sendingMethodConfigurationLink = useMemo(
+		() =>
+			applyFilters(
+				'woocommerce_email_editor_check_sending_method_configuration_link',
+				`https://www.mailpoet.com/blog/mailpoet-smtp-plugin/?utm_source=woocommerce_email_editor&utm_medium=plugin&utm_source_platform=${ editorCurrentPostType }`
+			) as string,
+		[]
+	);
+
 	const closeCallback = () => {
 		recordEvent( 'send_preview_email_modal_closed' );
 		void togglePreviewModal( false );
diff --git a/packages/js/email-editor/src/components/preview/test/send-preview-email.spec.tsx b/packages/js/email-editor/src/components/preview/test/send-preview-email.spec.tsx
index cd234a17e6..4df40a33d4 100644
--- a/packages/js/email-editor/src/components/preview/test/send-preview-email.spec.tsx
+++ b/packages/js/email-editor/src/components/preview/test/send-preview-email.spec.tsx
@@ -1,5 +1,5 @@
 /* eslint-disable @woocommerce/dependency-group -- because we import mocks first, we deactivate this rule to avoid ESLint errors */
-import '../../__mocks__/setup-shared-mocks';
+import '../../test/__mocks__/setup-shared-mocks';

 /**
  * External dependencies
diff --git a/packages/js/email-editor/src/components/sidebar/settings-panel.tsx b/packages/js/email-editor/src/components/sidebar/settings-panel.tsx
index 94314e1611..224e5ad90d 100644
--- a/packages/js/email-editor/src/components/sidebar/settings-panel.tsx
+++ b/packages/js/email-editor/src/components/sidebar/settings-panel.tsx
@@ -3,6 +3,7 @@
  */
 import { __ } from '@wordpress/i18n';
 import { applyFilters } from '@wordpress/hooks';
+import { useMemo } from '@wordpress/element';
 // eslint-disable-next-line @woocommerce/dependency-group
 import {
 	ErrorBoundary,
@@ -27,19 +28,27 @@ const tracking = {
 	debouncedRecordEvent,
 };

-const SidebarExtensionComponent = applyFilters(
-	'woocommerce_email_editor_setting_sidebar_extension_component',
-	RichTextWithButton,
-	tracking
-) as () => JSX.Element;
+export function SettingsPanel() {
+	const SidebarExtensionComponent = useMemo(
+		() =>
+			applyFilters(
+				'woocommerce_email_editor_setting_sidebar_extension_component',
+				RichTextWithButton,
+				tracking
+			) as () => JSX.Element,
+		[]
+	);

-const EmailStatusComponent = applyFilters(
-	'woocommerce_email_editor_setting_sidebar_email_status_component',
-	() => null,
-	tracking
-) as () => JSX.Element;
+	const EmailStatusComponent = useMemo(
+		() =>
+			applyFilters(
+				'woocommerce_email_editor_setting_sidebar_email_status_component',
+				() => null,
+				tracking
+			) as () => JSX.Element,
+		[]
+	);

-export function SettingsPanel() {
 	return (
 		<PluginDocumentSettingPanel
 			name="email-settings-panel"
diff --git a/packages/js/email-editor/src/components/__mocks__/setup-shared-mocks.ts b/packages/js/email-editor/src/components/test/__mocks__/setup-shared-mocks.ts
similarity index 100%
rename from packages/js/email-editor/src/components/__mocks__/setup-shared-mocks.ts
rename to packages/js/email-editor/src/components/test/__mocks__/setup-shared-mocks.ts
diff --git a/packages/js/email-editor/src/components/__mocks__/wordpress-blocks.ts b/packages/js/email-editor/src/components/test/__mocks__/wordpress-blocks.ts
similarity index 100%
rename from packages/js/email-editor/src/components/__mocks__/wordpress-blocks.ts
rename to packages/js/email-editor/src/components/test/__mocks__/wordpress-blocks.ts
diff --git a/packages/js/email-editor/src/components/__mocks__/wordpress-core-data.ts b/packages/js/email-editor/src/components/test/__mocks__/wordpress-core-data.ts
similarity index 100%
rename from packages/js/email-editor/src/components/__mocks__/wordpress-core-data.ts
rename to packages/js/email-editor/src/components/test/__mocks__/wordpress-core-data.ts
diff --git a/packages/js/email-editor/src/components/__mocks__/wordpress-data.ts b/packages/js/email-editor/src/components/test/__mocks__/wordpress-data.ts
similarity index 100%
rename from packages/js/email-editor/src/components/__mocks__/wordpress-data.ts
rename to packages/js/email-editor/src/components/test/__mocks__/wordpress-data.ts
diff --git a/packages/js/email-editor/src/components/__mocks__/wordpress-editor.ts b/packages/js/email-editor/src/components/test/__mocks__/wordpress-editor.ts
similarity index 100%
rename from packages/js/email-editor/src/components/__mocks__/wordpress-editor.ts
rename to packages/js/email-editor/src/components/test/__mocks__/wordpress-editor.ts
diff --git a/packages/js/email-editor/src/components/__mocks__/wordpress-hooks.ts b/packages/js/email-editor/src/components/test/__mocks__/wordpress-hooks.ts
similarity index 100%
rename from packages/js/email-editor/src/components/__mocks__/wordpress-hooks.ts
rename to packages/js/email-editor/src/components/test/__mocks__/wordpress-hooks.ts
diff --git a/packages/js/email-editor/src/components/__mocks__/wordpress-i18n.ts b/packages/js/email-editor/src/components/test/__mocks__/wordpress-i18n.ts
similarity index 100%
rename from packages/js/email-editor/src/components/__mocks__/wordpress-i18n.ts
rename to packages/js/email-editor/src/components/test/__mocks__/wordpress-i18n.ts
diff --git a/packages/js/email-editor/src/components/__mocks__/wordpress-preferences.ts b/packages/js/email-editor/src/components/test/__mocks__/wordpress-preferences.ts
similarity index 100%
rename from packages/js/email-editor/src/components/__mocks__/wordpress-preferences.ts
rename to packages/js/email-editor/src/components/test/__mocks__/wordpress-preferences.ts
diff --git a/packages/js/email-editor/src/editor.tsx b/packages/js/email-editor/src/editor.tsx
index 184197f02f..b457b8c88a 100644
--- a/packages/js/email-editor/src/editor.tsx
+++ b/packages/js/email-editor/src/editor.tsx
@@ -21,7 +21,6 @@ import {
 	initDomTracking,
 } from './events';
 import { useContentValidation } from './hooks/use-content-validation';
-import './style.scss';

 function Editor() {
 	const { postId, settings } = useSelect(
@@ -44,16 +43,15 @@ function Editor() {
 	);
 }

-const WrappedEditor = applyFilters(
-	'woocommerce_email_editor_wrap_editor_component',
-	Editor
-) as typeof Editor;
-
 export function initialize( elementId: string ) {
 	const container = document.getElementById( elementId );
 	if ( ! container ) {
 		return;
 	}
+	const WrappedEditor = applyFilters(
+		'woocommerce_email_editor_wrap_editor_component',
+		Editor
+	) as typeof Editor;
 	initEventCollector();
 	initStoreTracking();
 	initDomTracking();
diff --git a/packages/js/email-editor/src/events/dom-tracking.ts b/packages/js/email-editor/src/events/dom-tracking.ts
index e535d718a1..da7d3af200 100644
--- a/packages/js/email-editor/src/events/dom-tracking.ts
+++ b/packages/js/email-editor/src/events/dom-tracking.ts
@@ -1,13 +1,12 @@
 /**
  * External dependencies
  */
-import { applyFilters } from '@wordpress/hooks';
 import { __ } from '@wordpress/i18n';

 /**
  * Internal dependencies
  */
-import { recordEvent } from '.';
+import { recordEvent, isEventTrackingEnabled } from '.';

 let EVENTS_TO_TRACK = [];

@@ -36,11 +35,7 @@ function trackMatchingEvents( event: Event ) {
 }

 export function initDomTracking() {
-	const isEventTrackingEnabled = applyFilters(
-		'woocommerce_email_editor_events_tracking_enabled',
-		false
-	);
-	if ( ! isEventTrackingEnabled ) {
+	if ( ! isEventTrackingEnabled() ) {
 		return;
 	}

diff --git a/packages/js/email-editor/src/events/event-collector.ts b/packages/js/email-editor/src/events/event-collector.ts
index d602fe1e3c..a5db86a32e 100644
--- a/packages/js/email-editor/src/events/event-collector.ts
+++ b/packages/js/email-editor/src/events/event-collector.ts
@@ -17,7 +17,7 @@ const eventListenerHandler = ( eventData ) => {
 };

 const initEventCollector = () => {
-	if ( ! isEventTrackingEnabled ) {
+	if ( ! isEventTrackingEnabled() ) {
 		return;
 	}

@@ -25,7 +25,7 @@ const initEventCollector = () => {
 };

 window.addEventListener( 'unload', function () {
-	if ( ! isEventTrackingEnabled ) {
+	if ( ! isEventTrackingEnabled() ) {
 		return;
 	}

diff --git a/packages/js/email-editor/src/events/event-pipeline.ts b/packages/js/email-editor/src/events/event-pipeline.ts
index 38fd12a9d5..94cfd46bd6 100644
--- a/packages/js/email-editor/src/events/event-pipeline.ts
+++ b/packages/js/email-editor/src/events/event-pipeline.ts
@@ -4,10 +4,12 @@
 import { debounce } from 'lodash';
 import { applyFilters } from '@wordpress/hooks';

-const isEventTrackingEnabled = applyFilters(
-	'woocommerce_email_editor_events_tracking_enabled',
-	false
-);
+const isEventTrackingEnabled = () => {
+	return applyFilters(
+		'woocommerce_email_editor_events_tracking_enabled',
+		false
+	) as boolean;
+};

 const EMAIL_STRING = 'email_editor_events';

@@ -20,7 +22,7 @@ const dispatcher = new EventTarget();
  * @param          data - extra properties - please use a valid JSON object
  */
 const recordEvent = ( name: string, data = {} ) => {
-	if ( ! isEventTrackingEnabled ) {
+	if ( ! isEventTrackingEnabled() ) {
 		return;
 	}

@@ -44,7 +46,7 @@ const recordEvent = ( name: string, data = {} ) => {
 const recordEventOnce = ( function () {
 	const cachedEventName = {};
 	return ( name: string, data = {} ) => {
-		if ( ! isEventTrackingEnabled ) {
+		if ( ! isEventTrackingEnabled() ) {
 			return;
 		}

diff --git a/packages/js/email-editor/src/events/index.ts b/packages/js/email-editor/src/events/index.ts
index e142651271..a0eb1cf590 100644
--- a/packages/js/email-editor/src/events/index.ts
+++ b/packages/js/email-editor/src/events/index.ts
@@ -2,6 +2,7 @@ export {
 	recordEvent,
 	recordEventOnce,
 	debouncedRecordEvent,
+	isEventTrackingEnabled,
 } from './event-pipeline';
 export * from './event-collector';
 export * from './store-tracking';
diff --git a/packages/js/email-editor/src/events/store-tracking.ts b/packages/js/email-editor/src/events/store-tracking.ts
index 38fc1c3aeb..86e5027af4 100644
--- a/packages/js/email-editor/src/events/store-tracking.ts
+++ b/packages/js/email-editor/src/events/store-tracking.ts
@@ -2,14 +2,13 @@
  * External dependencies
  */
 import { use, select } from '@wordpress/data';
-import { applyFilters } from '@wordpress/hooks';
 import { store as preferencesStore } from '@wordpress/preferences';
 import { store as editorStore } from '@wordpress/editor';
 import { __ } from '@wordpress/i18n';
 /**
  * Internal dependencies
  */
-import { recordEvent } from '.';
+import { recordEvent, isEventTrackingEnabled } from '.';
 import { editorCurrentPostType, editorCurrentPostId } from '../store';

 /**
@@ -126,12 +125,7 @@ const rewrittenActions = {};
 const originalActions = {};

 export const initStoreTracking = () => {
-	const isEventTrackingEnabled = applyFilters(
-		'woocommerce_email_editor_events_tracking_enabled',
-		false
-	);
-
-	if ( ! isEventTrackingEnabled ) {
+	if ( ! isEventTrackingEnabled() ) {
 		return;
 	}

diff --git a/packages/js/email-editor/src/index.ts b/packages/js/email-editor/src/index.ts
index be52d7d8dd..8e60ebadf3 100644
--- a/packages/js/email-editor/src/index.ts
+++ b/packages/js/email-editor/src/index.ts
@@ -3,6 +3,36 @@
  */
 import { initialize } from './editor';

-window.addEventListener( 'DOMContentLoaded', () => {
-	initialize( 'woocommerce-email-editor' );
-} );
+/**
+ * This method is used to initialize the email editor.
+ * This method expects some data set on the global window object set on window.WooCommerceEmailEditor
+ *
+ * {
+ *    "current_post_type": "", // The post type of the current post.
+ *    "current_post_id": "", // The ID of the current post.
+ *    "current_wp_user_email": "", // The email of the current user.
+ *    "editor_settings": {}, // The block editor settings.
+ *    "editor_theme": {}, // The block editor theme.
+ *    "user_theme_post_id": "", // The ID of the user theme post.
+ *    "urls": {
+ *      "listings": "", // optional The URL for the listings page.
+ *      "send": "", // optional The URL for the send button.
+ *      "back": "" // optionsl The URL for the back button (top left corner).
+ *    }
+ *	}
+ *
+ * @param htmlId - The ID of the HTML element to initialize the editor in.
+ */
+export function initializeEditor( htmlId: string ) {
+	if ( document.readyState === 'loading' ) {
+		window.addEventListener(
+			'DOMContentLoaded',
+			() => {
+				initialize( htmlId );
+			},
+			{ once: true }
+		);
+	} else {
+		initialize( htmlId );
+	}
+}
diff --git a/packages/js/email-editor/src/style.scss b/packages/js/email-editor/src/style.scss
index b74cd0edca..d4b4d00a0a 100644
--- a/packages/js/email-editor/src/style.scss
+++ b/packages/js/email-editor/src/style.scss
@@ -5,3 +5,4 @@
 @import "./components/sidebar/style.scss";
 @import "./components/styles-sidebar/style.scss";
 @import "./components/template-select/style.scss";
+@import "./components/personalization-tags/style.scss";
diff --git a/packages/js/email-editor/tsconfig-cjs.json b/packages/js/email-editor/tsconfig-cjs.json
new file mode 100644
index 0000000000..a2112660f0
--- /dev/null
+++ b/packages/js/email-editor/tsconfig-cjs.json
@@ -0,0 +1,10 @@
+{
+	"extends": "./tsconfig.json",
+	"compilerOptions": {
+		"module": "commonjs",
+		"outDir": "build",
+		"declaration": false,
+		"declarationMap": false,
+		"declarationDir": null
+	}
+}
\ No newline at end of file
diff --git a/packages/js/email-editor/tsconfig.json b/packages/js/email-editor/tsconfig.json
index 38dd34e3be..0ece6600ec 100644
--- a/packages/js/email-editor/tsconfig.json
+++ b/packages/js/email-editor/tsconfig.json
@@ -1,22 +1,18 @@
 {
+	"extends": "../tsconfig",
 	"compilerOptions": {
 		"rootDir": "src",
-		"noEmit": true,
-		"composite": true,
-		"incremental": true,
-		"target": "esnext",
-		"module": "esnext",
-		"moduleResolution": "node",
-		"esModuleInterop": true,
+		"outDir": "build-module",
+		"declaration": true,
+		"declarationDir": "build-types",
 		"resolveJsonModule": true,
 		"allowSyntheticDefaultImports": true,
-		"allowJs": true,
-		"skipLibCheck": true,
 		"downlevelIteration": true,
 		"jsx": "react-jsx",
+		"jsxFactory": null,
+		"jsxFragmentFactory": null,

 		// strict checks
-		"strict": true,
 		"alwaysStrict": true,
 		"strictBindCallApply": false,
 		"strictFunctionTypes": false,
@@ -34,9 +30,10 @@
 		"typeRoots": [ "./node_modules/@types" ]
 	},
 	"include": [
+		"typings/**/*",
 		"src/**/*"
 	],
 	"exclude": [
-		"**/test/**",
+		"**/test/**"
 	]
 }
diff --git a/packages/js/email-editor/webpack.config.js b/packages/js/email-editor/webpack.config.js
index f368447d56..624855fb5b 100644
--- a/packages/js/email-editor/webpack.config.js
+++ b/packages/js/email-editor/webpack.config.js
@@ -1,31 +1,33 @@
-const defaultConfig = require( '@wordpress/scripts/config/webpack.config' );
-const WooCommerceDependencyExtractionWebpackPlugin = require( '@woocommerce/dependency-extraction-webpack-plugin' );
-const CopyWebpackPlugin = require( 'copy-webpack-plugin' );
+/**
+ * Internal dependencies
+ */
+const { webpackConfig } = require( '@woocommerce/internal-style-build' );
+
+/**
+ * External dependencies
+ */
 const path = require( 'path' );

+const NODE_ENV = process.env.NODE_ENV || 'development';
+
 module.exports = {
-	...defaultConfig,
+	mode: NODE_ENV,
+	cache: ( NODE_ENV !== 'development' && { type: 'memory' } ) || {
+		type: 'filesystem',
+		cacheDirectory: path.resolve(
+			__dirname,
+			'../../../node_modules/.cache/webpack-email-editor'
+		),
+	},
 	entry: {
-		index: './src/index.ts',
+		'build-style': __dirname + '/src/style.scss',
+	},
+	output: {
+		path: __dirname,
 	},
 	module: {
-		...defaultConfig.module,
+		parser: webpackConfig.parser,
+		rules: webpackConfig.rules,
 	},
-	plugins: [
-		...defaultConfig.plugins.filter(
-			( plugin ) =>
-				plugin.constructor.name !== 'DependencyExtractionWebpackPlugin'
-		),
-		new WooCommerceDependencyExtractionWebpackPlugin(),
-		// Copy the rich-text.js file to the build directory.
-		// This is required for the Personalization tags to work. Can be removed after default version is set to WP 6.8.
-		new CopyWebpackPlugin( {
-			patterns: [
-				{
-					from: path.join( __dirname, 'assets' ),
-					to: './assets',
-				},
-			],
-		} ),
-	],
+	plugins: [ ...webpackConfig.plugins ],
 };
diff --git a/plugins/woocommerce/changelog/wooplug-3653-configure-build-and-publishing-of-the-email-editors-js b/plugins/woocommerce/changelog/wooplug-3653-configure-build-and-publishing-of-the-email-editors-js
new file mode 100644
index 0000000000..bdb8c6a641
--- /dev/null
+++ b/plugins/woocommerce/changelog/wooplug-3653-configure-build-and-publishing-of-the-email-editors-js
@@ -0,0 +1,4 @@
+Significance: patch
+Type: update
+
+Update block email editor integration to work with the updated JS package
diff --git a/plugins/woocommerce/client/admin/client/wp-admin-scripts/email-editor-integration/index.ts b/plugins/woocommerce/client/admin/client/wp-admin-scripts/email-editor-integration/index.ts
index 106722c861..167f1974fb 100644
--- a/plugins/woocommerce/client/admin/client/wp-admin-scripts/email-editor-integration/index.ts
+++ b/plugins/woocommerce/client/admin/client/wp-admin-scripts/email-editor-integration/index.ts
@@ -6,6 +6,7 @@
 import { addFilter } from '@wordpress/hooks';
 import { registerBlockType } from '@wordpress/blocks';
 import { __ } from '@wordpress/i18n';
+import { initializeEditor } from '@woocommerce/email-editor';

 /**
  * Internal dependencies
@@ -41,3 +42,4 @@ registerBlockType( 'woo/email-content', wooContentPlaceholderBlock );
 modifySidebar();
 modifyTemplateSidebar();
 registerEmailValidationRules();
+initializeEditor( 'woocommerce-email-editor' );
diff --git a/plugins/woocommerce/client/admin/package.json b/plugins/woocommerce/client/admin/package.json
index a07c726322..3b97d615e4 100644
--- a/plugins/woocommerce/client/admin/package.json
+++ b/plugins/woocommerce/client/admin/package.json
@@ -320,6 +320,9 @@
 				"node_modules/@woocommerce/dependency-extraction-webpack-plugin/src/",
 				"node_modules/@woocommerce/dependency-extraction-webpack-plugin/assets/",
 				"node_modules/@woocommerce/email-editor/build",
+				"node_modules/@woocommerce/email-editor/build-module",
+				"node_modules/@woocommerce/email-editor/build-style",
+				"node_modules/@woocommerce/email-editor/build-types",
 				"node_modules/@woocommerce/email-editor/assets",
 				"node_modules/@woocommerce/eslint-plugin/configs",
 				"node_modules/@woocommerce/eslint-plugin/rules",
diff --git a/plugins/woocommerce/client/admin/webpack.config.js b/plugins/woocommerce/client/admin/webpack.config.js
index bece975c2c..c184f5eeb1 100644
--- a/plugins/woocommerce/client/admin/webpack.config.js
+++ b/plugins/woocommerce/client/admin/webpack.config.js
@@ -59,6 +59,7 @@ const wcAdminPackages = [
 	'product-editor',
 	'settings-editor',
 	'remote-logging',
+	'email-editor',
 ];

 const getEntryPoints = () => {
@@ -221,15 +222,15 @@ const webpackConfig = {
 			],
 		} ),

-		// The email-editor is integrated as admin dependency, hence this copy step.
+		// The email-editor assets for the rich-text.js file need to be copied to the build directory.
 		new CopyWebpackPlugin( {
 			patterns: [
 				{
 					from: path.join(
 						__dirname,
-						'../../../../packages/js/email-editor/build'
+						'../../../../packages/js/email-editor/assets'
 					),
-					to: './email-editor',
+					to: './email-editor/assets',
 				},
 			],
 		} ),
diff --git a/plugins/woocommerce/src/Internal/EmailEditor/PageRenderer.php b/plugins/woocommerce/src/Internal/EmailEditor/PageRenderer.php
index c1b40cee97..f88eddf4f4 100644
--- a/plugins/woocommerce/src/Internal/EmailEditor/PageRenderer.php
+++ b/plugins/woocommerce/src/Internal/EmailEditor/PageRenderer.php
@@ -122,19 +122,10 @@ class PageRenderer {
 		);
 		// End of replacing Rich Text package.

-		$file_name     = 'index';
-		$assets_params = require $email_editor_assets_path . "{$file_name}.asset.php";
-
-		wp_enqueue_script(
-			'woocommerce_email_editor',
-			$email_editor_assets_url . "{$file_name}.js",
-			$assets_params['dependencies'],
-			$assets_params['version'],
-			true
-		);
+		$assets_params = require $email_editor_assets_path . 'index.asset.php';
 		wp_enqueue_style(
-			'woocommerce_email_editor',
-			$email_editor_assets_url . "style-{$file_name}.css",
+			'wc-admin-email-editor-integration',
+			$email_editor_assets_url . 'style.css',
 			array(),
 			$assets_params['version']
 		);
@@ -162,7 +153,7 @@ class PageRenderer {
 		$email_editor_settings['displaySendEmailButton'] = false;

 		wp_localize_script(
-			'woocommerce_email_editor',
+			'wc-admin-email-editor-integration',
 			'WooCommerceEmailEditor',
 			array(
 				'current_post_type'     => esc_js( $post_type ),
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 6ce138ceec..c5a92983e4 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -101,7 +101,7 @@ importers:
         version: 1.15.0
       postcss-loader:
         specifier: 4.3.x
-        version: 4.3.0(postcss@8.4.49)(webpack@5.97.1)
+        version: 4.3.0(postcss@8.4.49)(webpack@5.97.1(@swc/core@1.3.100))
       prettier:
         specifier: npm:wp-prettier@^2.8.5
         version: wp-prettier@2.8.5
@@ -128,7 +128,7 @@ importers:
         version: 5.7.2
       webpack:
         specifier: 5.97.x
-        version: 5.97.1(@swc/core@1.3.100)(webpack-cli@5.1.4)
+        version: 5.97.1(@swc/core@1.3.100)

   packages/js/admin-layout:
     dependencies:
@@ -156,7 +156,7 @@ importers:
         version: 6.13.1-next.a9f418477.0
       css-loader:
         specifier: 6.11.x
-        version: 6.11.0(webpack@5.97.1(@swc/core@1.3.100))
+        version: 6.11.0(webpack@5.97.1)
       eslint:
         specifier: ^8.55.0
         version: 8.55.0
@@ -180,10 +180,10 @@ importers:
         version: 5.0.5
       sass-loader:
         specifier: 10.5.x
-        version: 10.5.0(sass@1.69.5)(webpack@5.97.1(@swc/core@1.3.100))
+        version: 10.5.0(sass@1.69.5)(webpack@5.97.1)
       ts-jest:
         specifier: 29.1.x
-        version: 29.1.1(@babel/core@7.25.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.7))(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@22.9.1)(typescript@5.7.2)))(typescript@5.7.2)
+        version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@22.9.1)(typescript@5.7.2)))(typescript@5.7.2)
       typescript:
         specifier: 5.7.x
         version: 5.7.2
@@ -238,7 +238,7 @@ importers:
         version: 27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2))
       ts-jest:
         specifier: 29.1.x
-        version: 29.1.1(@babel/core@7.25.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.7))(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2)))(typescript@5.7.2)
+        version: 29.1.1(@babel/core@7.26.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2)))(typescript@5.7.2)
       typescript:
         specifier: 5.7.x
         version: 5.7.2
@@ -311,10 +311,10 @@ importers:
         version: 6.13.1-next.a9f418477.0
       copy-webpack-plugin:
         specifier: 13.0.x
-        version: 13.0.0(webpack@5.97.1(@swc/core@1.3.100))
+        version: 13.0.0(webpack@5.97.1)
       css-loader:
         specifier: 6.11.x
-        version: 6.11.0(webpack@5.97.1(@swc/core@1.3.100))
+        version: 6.11.0(webpack@5.97.1)
       eslint:
         specifier: ^8.55.0
         version: 8.55.0
@@ -341,7 +341,7 @@ importers:
         version: 5.0.5
       sass-loader:
         specifier: 10.5.x
-        version: 10.5.0(sass@1.69.5)(webpack@5.97.1(@swc/core@1.3.100))
+        version: 10.5.0(sass@1.69.5)(webpack@5.97.1)
       ts-jest:
         specifier: 29.1.x
         version: 29.1.1(@babel/core@7.25.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.7))(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@22.9.1)(typescript@5.7.2)))(typescript@5.7.2)
@@ -618,7 +618,7 @@ importers:
         version: 6.13.1-next.a9f418477.0
       css-loader:
         specifier: 6.11.x
-        version: 6.11.0(webpack@5.97.1(@swc/core@1.3.100))
+        version: 6.11.0(webpack@5.97.1)
       eslint:
         specifier: ^8.55.0
         version: 8.55.0
@@ -648,7 +648,7 @@ importers:
         version: 5.0.5
       sass-loader:
         specifier: 10.5.x
-        version: 10.5.0(sass@1.69.5)(webpack@5.97.1(@swc/core@1.3.100))
+        version: 10.5.0(sass@1.69.5)(webpack@5.97.1)
       ts-jest:
         specifier: 29.1.x
         version: 29.1.1(@babel/core@7.25.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.7))(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@22.9.1)(typescript@5.7.2)))(typescript@5.7.2)
@@ -663,7 +663,7 @@ importers:
         version: 5.97.1(@swc/core@1.3.100)(webpack-cli@5.1.4)
       webpack-cli:
         specifier: 5.1.x
-        version: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.97.1)
+        version: 5.1.4(webpack-dev-server@4.15.1)(webpack@5.97.1)
       wireit:
         specifier: 0.14.12
         version: 0.14.12
@@ -861,7 +861,7 @@ importers:
         version: 6.13.1-next.a9f418477.0
       css-loader:
         specifier: 6.11.x
-        version: 6.11.0(webpack@5.97.1(@swc/core@1.3.100))
+        version: 6.11.0(webpack@5.97.1)
       eslint:
         specifier: ^8.55.0
         version: 8.55.0
@@ -882,7 +882,7 @@ importers:
         version: 5.0.5
       sass-loader:
         specifier: 10.5.x
-        version: 10.5.0(sass@1.69.5)(webpack@5.97.1(@swc/core@1.3.100))
+        version: 10.5.0(sass@1.69.5)(webpack@5.97.1)
       ts-jest:
         specifier: 29.1.x
         version: 29.1.1(@babel/core@7.25.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.7))(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@22.9.1)(typescript@5.7.2)))(typescript@5.7.2)
@@ -1304,27 +1304,27 @@ importers:
       '@types/wordpress__media-utils':
         specifier: ^4.14.4
         version: 4.14.4(@emotion/is-prop-valid@1.2.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@woocommerce/dependency-extraction-webpack-plugin':
-        specifier: workspace:*
-        version: link:../dependency-extraction-webpack-plugin
       '@woocommerce/eslint-plugin':
         specifier: workspace:*
         version: link:../eslint-plugin
       '@woocommerce/internal-js-tests':
         specifier: workspace:*
         version: link:../internal-js-tests
+      '@woocommerce/internal-style-build':
+        specifier: workspace:*
+        version: link:../internal-style-build
+      '@wordpress/browserslist-config':
+        specifier: next
+        version: 6.13.1-next.a9f418477.0
       '@wordpress/prettier-config':
         specifier: 2.17.0
-        version: 2.17.0(wp-prettier@3.0.3)
-      '@wordpress/scripts':
-        specifier: wp-6.6
-        version: 28.0.2(@playwright/test@1.50.1)(@swc/core@1.3.100)(@types/eslint@8.44.8)(@types/node@20.17.8)(@types/webpack@4.41.38)(encoding@0.1.13)(file-loader@6.2.0(webpack@5.97.1))(node-notifier@8.0.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2))(type-fest@3.13.1)(typescript@5.7.2)(webpack-hot-middleware@2.25.4)
+        version: 2.17.0(wp-prettier@2.8.5)
       '@wordpress/stylelint-config':
-        specifier: ^21.36.0
-        version: 21.36.0(postcss@8.4.49)(stylelint@14.16.1)
-      copy-webpack-plugin:
-        specifier: 13.0.x
-        version: 13.0.0(webpack@5.97.1(@swc/core@1.3.100))
+        specifier: ^21.0.0
+        version: 21.36.0(postcss@8.4.32)(stylelint@14.16.1)
+      eslint:
+        specifier: ^8.55.0
+        version: 8.55.0
       jest:
         specifier: 27.5.x
         version: 27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2))
@@ -1335,23 +1335,26 @@ importers:
         specifier: 27.5.x
         version: 27.5.1
       prettier:
-        specifier: npm:wp-prettier@^3.0.3
-        version: wp-prettier@3.0.3
+        specifier: npm:wp-prettier@^2.8.5
+        version: wp-prettier@2.8.5
+      rimraf:
+        specifier: 5.0.5
+        version: 5.0.5
+      stylelint:
+        specifier: ^14.16.1
+        version: 14.16.1
       ts-jest:
         specifier: 29.1.x
         version: 29.1.1(@babel/core@7.25.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.7))(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2)))(typescript@5.7.2)
       ts-loader:
         specifier: 9.5.x
-        version: 9.5.1(typescript@5.7.2)(webpack@5.97.1)
+        version: 9.5.1(typescript@5.7.2)(webpack@5.97.1(@swc/core@1.3.100))
       typescript:
         specifier: 5.7.x
         version: 5.7.2
       wireit:
         specifier: 0.14.12
         version: 0.14.12
-      wp-types:
-        specifier: ^3.65.0
-        version: 3.66.1

   packages/js/eslint-plugin:
     dependencies:
@@ -1494,7 +1497,7 @@ importers:
         version: 6.0.1
       css-loader:
         specifier: 6.11.x
-        version: 6.11.0(webpack@5.97.1(@swc/core@1.3.100))
+        version: 6.11.0(webpack@5.97.1)
       eslint:
         specifier: ^8.55.0
         version: 8.55.0
@@ -1515,7 +1518,7 @@ importers:
         version: 5.0.5
       sass-loader:
         specifier: 10.5.x
-        version: 10.5.0(sass@1.69.5)(webpack@5.97.1(@swc/core@1.3.100))
+        version: 10.5.0(sass@1.69.5)(webpack@5.97.1)
       ts-jest:
         specifier: 29.1.x
         version: 29.1.1(@babel/core@7.25.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.7))(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@22.9.1)(typescript@5.7.2)))(typescript@5.7.2)
@@ -1527,7 +1530,7 @@ importers:
         version: 5.97.1(@swc/core@1.3.100)(webpack-cli@5.1.4)
       webpack-cli:
         specifier: 5.1.x
-        version: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.97.1)
+        version: 5.1.4(webpack-dev-server@4.15.1)(webpack@5.97.1)
       wireit:
         specifier: 0.14.12
         version: 0.14.12
@@ -1710,10 +1713,10 @@ importers:
         version: 6.13.1-next.a9f418477.0
       copy-webpack-plugin:
         specifier: 13.0.x
-        version: 13.0.0(webpack@5.97.1(@swc/core@1.3.100))
+        version: 13.0.0(webpack@5.97.1)
       css-loader:
         specifier: 6.11.x
-        version: 6.11.0(webpack@5.97.1(@swc/core@1.3.100))
+        version: 6.11.0(webpack@5.97.1)
       eslint:
         specifier: ^8.55.0
         version: 8.55.0
@@ -1828,13 +1831,13 @@ importers:
         version: 2.9.2(webpack@5.97.1(@swc/core@1.3.100))
       postcss-loader:
         specifier: 4.3.x
-        version: 4.3.0(postcss@8.4.49)(webpack@5.97.1)
+        version: 4.3.0(postcss@8.4.49)(webpack@5.97.1(@swc/core@1.3.100))
       sass-loader:
         specifier: 10.5.x
         version: 10.5.0(sass@1.69.5)(webpack@5.97.1(@swc/core@1.3.100))
       webpack-remove-empty-scripts:
         specifier: 1.0.x
-        version: 1.0.4(webpack@5.97.1)
+        version: 1.0.4(webpack@5.97.1(@swc/core@1.3.100))
       webpack-rtl-plugin:
         specifier: 2.0.x
         version: 2.0.0
@@ -1865,7 +1868,7 @@ importers:
         version: 5.7.2
       webpack:
         specifier: 5.97.x
-        version: 5.97.1(@swc/core@1.3.100)(webpack-cli@5.1.4)
+        version: 5.97.1(@swc/core@1.3.100)
       wireit:
         specifier: 0.14.12
         version: 0.14.12
@@ -2121,7 +2124,7 @@ importers:
         version: 6.13.1-next.a9f418477.0
       css-loader:
         specifier: 6.11.x
-        version: 6.11.0(webpack@5.97.1(@swc/core@1.3.100))
+        version: 6.11.0(webpack@5.97.1)
       eslint:
         specifier: ^8.55.0
         version: 8.55.0
@@ -2142,7 +2145,7 @@ importers:
         version: 5.0.5
       sass-loader:
         specifier: 10.5.x
-        version: 10.5.0(sass@1.69.5)(webpack@5.97.1(@swc/core@1.3.100))
+        version: 10.5.0(sass@1.69.5)(webpack@5.97.1)
       ts-jest:
         specifier: 29.1.x
         version: 29.1.1(@babel/core@7.25.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.7))(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@22.9.1)(typescript@5.7.2)))(typescript@5.7.2)
@@ -2371,10 +2374,10 @@ importers:
         version: 6.13.1-next.a9f418477.0
       copy-webpack-plugin:
         specifier: 13.0.x
-        version: 13.0.0(webpack@5.97.1(@swc/core@1.3.100))
+        version: 13.0.0(webpack@5.97.1)
       css-loader:
         specifier: 6.11.x
-        version: 6.11.0(webpack@5.97.1(@swc/core@1.3.100))
+        version: 6.11.0(webpack@5.97.1)
       eslint:
         specifier: ^8.55.0
         version: 8.55.0
@@ -2386,7 +2389,7 @@ importers:
         version: 27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@22.9.1)(typescript@5.7.2))
       mini-css-extract-plugin:
         specifier: 2.9.x
-        version: 2.9.2(webpack@5.97.1(@swc/core@1.3.100))
+        version: 2.9.2(webpack@5.97.1)
       postcss:
         specifier: 8.4.x
         version: 8.4.49
@@ -2407,7 +2410,7 @@ importers:
         version: 5.0.5
       sass-loader:
         specifier: 10.5.x
-        version: 10.5.0(sass@1.69.5)(webpack@5.97.1(@swc/core@1.3.100))
+        version: 10.5.0(sass@1.69.5)(webpack@5.97.1)
       ts-jest:
         specifier: 29.1.x
         version: 29.1.1(@babel/core@7.25.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.7))(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@22.9.1)(typescript@5.7.2)))(typescript@5.7.2)
@@ -2664,10 +2667,10 @@ importers:
         version: 6.13.1-next.a9f418477.0
       copy-webpack-plugin:
         specifier: 13.0.x
-        version: 13.0.0(webpack@5.97.1(@swc/core@1.3.100))
+        version: 13.0.0(webpack@5.97.1)
       css-loader:
         specifier: 6.11.x
-        version: 6.11.0(webpack@5.97.1(@swc/core@1.3.100))
+        version: 6.11.0(webpack@5.97.1)
       eslint:
         specifier: ^8.55.0
         version: 8.55.0
@@ -2679,7 +2682,7 @@ importers:
         version: 27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@22.9.1)(typescript@5.7.2))
       mini-css-extract-plugin:
         specifier: 2.9.x
-        version: 2.9.2(webpack@5.97.1(@swc/core@1.3.100))
+        version: 2.9.2(webpack@5.97.1)
       postcss:
         specifier: 8.4.x
         version: 8.4.49
@@ -2697,7 +2700,7 @@ importers:
         version: 5.0.5
       sass-loader:
         specifier: 10.5.x
-        version: 10.5.0(sass@1.69.5)(webpack@5.97.1(@swc/core@1.3.100))
+        version: 10.5.0(sass@1.69.5)(webpack@5.97.1)
       ts-jest:
         specifier: 29.1.x
         version: 29.1.1(@babel/core@7.25.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.7))(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@22.9.1)(typescript@5.7.2)))(typescript@5.7.2)
@@ -2724,7 +2727,7 @@ importers:
     dependencies:
       debug:
         specifier: ^4.3.4
-        version: 4.3.4(supports-color@9.4.0)
+        version: 4.3.4(supports-color@5.5.0)
     devDependencies:
       '@babel/core':
         specifier: 7.25.7
@@ -3165,7 +3168,7 @@ importers:
         version: 3.34.0
       debug:
         specifier: ^4.3.4
-        version: 4.3.4(supports-color@9.4.0)
+        version: 4.3.4(supports-color@5.5.0)
       dompurify:
         specifier: ^2.5.7
         version: 2.5.7
@@ -3424,7 +3427,7 @@ importers:
         version: 27.5.1(@babel/core@7.25.7)
       babel-loader:
         specifier: 9.2.x
-        version: 9.2.1(@babel/core@7.25.7)(webpack@5.97.1(@swc/core@1.3.100))
+        version: 9.2.1(@babel/core@7.25.7)(webpack@5.97.1)
       babel-plugin-transform-react-remove-prop-types:
         specifier: 0.4.24
         version: 0.4.24
@@ -3439,10 +3442,10 @@ importers:
         version: 3.3.7
       copy-webpack-plugin:
         specifier: 13.0.x
-        version: 13.0.0(webpack@5.97.1(@swc/core@1.3.100))
+        version: 13.0.0(webpack@5.97.1)
       css-loader:
         specifier: 6.11.x
-        version: 6.11.0(webpack@5.97.1(@swc/core@1.3.100))
+        version: 6.11.0(webpack@5.97.1)
       eslint:
         specifier: ^8.55.0
         version: 8.55.0
@@ -3460,7 +3463,7 @@ importers:
         version: 7.33.2(eslint@8.55.0)
       fork-ts-checker-webpack-plugin:
         specifier: 9.0.x
-        version: 9.0.2(typescript@5.7.2)(webpack@5.97.1(@swc/core@1.3.100))
+        version: 9.0.2(typescript@5.7.2)(webpack@5.97.1)
       fs-extra:
         specifier: 11.1.1
         version: 11.1.1
@@ -3481,7 +3484,7 @@ importers:
         version: 2.0.0
       mini-css-extract-plugin:
         specifier: 2.9.x
-        version: 2.9.2(webpack@5.97.1(@swc/core@1.3.100))
+        version: 2.9.2(webpack@5.97.1)
       moment:
         specifier: ^2.29.4
         version: 2.29.4
@@ -3538,7 +3541,7 @@ importers:
         version: 1.69.5
       sass-loader:
         specifier: 10.5.x
-        version: 10.5.0(sass@1.69.5)(webpack@5.97.1(@swc/core@1.3.100))
+        version: 10.5.0(sass@1.69.5)(webpack@5.97.1)
       stylelint:
         specifier: ^14.16.1
         version: 14.16.1
@@ -3993,13 +3996,13 @@ importers:
         version: 5.2.2(webpack@5.97.1)
       copy-webpack-plugin:
         specifier: 13.0.x
-        version: 13.0.0(webpack@5.97.1(@swc/core@1.3.100))
+        version: 13.0.0(webpack@5.97.1)
       core-js:
         specifier: 3.25.0
         version: 3.25.0
       css-loader:
         specifier: 6.11.x
-        version: 6.11.0(webpack@5.97.1(@swc/core@1.3.100))
+        version: 6.11.0(webpack@5.97.1)
       cssnano:
         specifier: 5.1.12
         version: 5.1.12(postcss@8.4.49)
@@ -4074,7 +4077,7 @@ importers:
         version: 13.0.1
       mini-css-extract-plugin:
         specifier: 2.9.x
-        version: 2.9.2(webpack@5.97.1(@swc/core@1.3.100))
+        version: 2.9.2(webpack@5.97.1)
       postcss:
         specifier: 8.4.x
         version: 8.4.49
@@ -4113,7 +4116,7 @@ importers:
         version: 4.1.1
       sass-loader:
         specifier: 10.5.x
-        version: 10.5.0(sass@1.69.5)(webpack@5.97.1(@swc/core@1.3.100))
+        version: 10.5.0(sass@1.69.5)(webpack@5.97.1)
       storybook:
         specifier: ^7.6.4
         version: 7.6.4(encoding@0.1.13)
@@ -4453,7 +4456,7 @@ importers:
         version: link:../../packages/js/eslint-plugin
       copy-webpack-plugin:
         specifier: 13.0.x
-        version: 13.0.0(webpack@5.97.1(@swc/core@1.3.100))
+        version: 13.0.0(webpack@5.97.1)
       eslint:
         specifier: ^8.55.0
         version: 8.55.0
@@ -10698,20 +10701,6 @@ packages:
       typescript:
         optional: true

-  '@wordpress/eslint-plugin@19.2.0':
-    resolution: {integrity: sha512-2mRC7WRV9qwdcMsm+VSTjcYQbLcBag5UTUXrClsQPqDZ9aeoL8QloStFCKOqXuYRYN4tYytIgnM/blvEz7OlAw==}
-    engines: {node: '>=18.12.0', npm: '>=8.19.2'}
-    peerDependencies:
-      '@babel/core': '>=7'
-      eslint: '>=8'
-      prettier: '>=3'
-      typescript: '>=4'
-    peerDependenciesMeta:
-      prettier:
-        optional: true
-      typescript:
-        optional: true
-
   '@wordpress/eslint-plugin@22.8.0':
     resolution: {integrity: sha512-VH39xtdnKqLag8PUhS+y4n0Ted4lPtUQ1vIr66DiFvGWMZ4+GfFl8IFOIWi41+6Obw8kgKuOUJhd0qSl+8tg1w==}
     engines: {node: '>=18.12.0', npm: '>=8.19.2'}
@@ -11092,12 +11081,6 @@ packages:
     peerDependencies:
       npm-package-json-lint: '>=6.0.0'

-  '@wordpress/npm-package-json-lint-config@5.18.0':
-    resolution: {integrity: sha512-6pjCa0BteHjfo1bdByKIZYR8Cr2wNwXi2DylgazFSkvpabdFa5X04bDXFZZGHGiZq/MkajiJ8iOTUgckpUjATQ==}
-    engines: {node: '>=18.12.0', npm: '>=8.19.2'}
-    peerDependencies:
-      npm-package-json-lint: '>=6.0.0'
-
   '@wordpress/npm-package-json-lint-config@5.22.0':
     resolution: {integrity: sha512-3ZU5lhM9d5ePgI8Sw1oUDttWbj8Bxkh89IzJQGeCSB0HLo7n2sGADgfLx2+apuDiPGiRK4pIySxLaiFer+Tx/A==}
     engines: {node: '>=18.12.0', npm: '>=8.19.2'}
@@ -11208,12 +11191,6 @@ packages:
     peerDependencies:
       prettier: '>=2'

-  '@wordpress/prettier-config@4.18.0':
-    resolution: {integrity: sha512-VsFFqSBpMw5u2kq1OTQeSMTUrznnAuZ0Z7+41MOsyJjb9DFX2Yq6k1FcmUhBJWDLEvkunMorSZ7kqhUxHWPR+g==}
-    engines: {node: '>=18.12.0', npm: '>=8.19.2'}
-    peerDependencies:
-      prettier: '>=3'
-
   '@wordpress/prettier-config@4.22.0':
     resolution: {integrity: sha512-+XsgTyVSrPd7m+s4G/fNBuyzvkE/Dgx3syUn5G5KLhnb5atRb4r1hWrLBg/oC8vsU5kGEyO+p6LEDRjcZtl0nQ==}
     engines: {node: '>=18.12.0', npm: '>=8.19.2'}
@@ -11417,15 +11394,6 @@ packages:
     engines: {node: '>=12.13', npm: '>=6.9'}
     hasBin: true

-  '@wordpress/scripts@28.0.2':
-    resolution: {integrity: sha512-TawbVRncjSjDDsjdoBdwMIvJaFobTL9Dq5Euh3o+1iEjT5gAsb8nn+ICQpW5xSnZTBCoUps8EAksVpytwxOCIg==}
-    engines: {node: '>=18.12.0', npm: '>=8.19.2'}
-    hasBin: true
-    peerDependencies:
-      '@playwright/test': ^1.43.0
-      react: ^18.0.0
-      react-dom: ^18.0.0
-
   '@wordpress/scripts@30.13.0':
     resolution: {integrity: sha512-xzHvuTgGy9y3tdUHvwpkd90olnO96KVsxCmC2qaouGjPkeUQKn+j7m6zPrqzxkhSQO7JMzaJ5N74agkiaGr0Rw==}
     engines: {node: '>=18.12.0', npm: '>=8.19.2'}
@@ -11505,12 +11473,6 @@ packages:
     peerDependencies:
       stylelint: ^14.2

-  '@wordpress/stylelint-config@22.7.0':
-    resolution: {integrity: sha512-nzFUC1urqtLklCke38VTH7yYlF3ihHu+ULRYwzhJNqWzttwz4srj60M3etEa2pdd2U6yywotQAJzcDbHw01qvQ==}
-    engines: {node: '>=18.12.0', npm: '>=8.19.2'}
-    peerDependencies:
-      stylelint: ^14.2
-
   '@wordpress/stylelint-config@23.14.0':
     resolution: {integrity: sha512-SxrPIiR7LE8DMQblsPkiE81VY/JQAaU5SGmphDG+Bc2DnxfOdkt1oMsSUfsSEVwHuRlgh4ZD42CLlIV+Y0AexQ==}
     engines: {node: '>=18.12.0', npm: '>=8.19.2'}
@@ -13600,9 +13562,6 @@ packages:
   create-require@1.1.1:
     resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}

-  cross-fetch@3.1.5:
-    resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==}
-
   cross-fetch@3.1.8:
     resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==}

@@ -13660,10 +13619,6 @@ packages:
     peerDependencies:
       postcss: ^8.0.9

-  css-functions-list@3.2.1:
-    resolution: {integrity: sha512-Nj5YcaGgBtuUmn1D7oHqPW0c9iui7xsTsj5lIX8ZgevdfhmjFfKB3r8moHJtNJnctnYXJyYX5I1pp90HM4TPgQ==}
-    engines: {node: '>=12 || >=16'}
-
   css-functions-list@3.2.3:
     resolution: {integrity: sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==}
     engines: {node: '>=12 || >=16'}
@@ -13971,15 +13926,6 @@ packages:
       supports-color:
         optional: true

-  debug@4.3.7:
-    resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
-    engines: {node: '>=6.0'}
-    peerDependencies:
-      supports-color: '*'
-    peerDependenciesMeta:
-      supports-color:
-        optional: true
-
   debug@4.4.0:
     resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
     engines: {node: '>=6.0'}
@@ -14206,9 +14152,6 @@ packages:
   devtools-protocol@0.0.901419:
     resolution: {integrity: sha512-4INMPwNm9XRpBukhNbF7OB6fNTTCaI8pzy/fXg0xQzAy5h3zL1P8xT3QazgKqBrb/hAYwIBizqDBZ7GtJE74QQ==}

-  devtools-protocol@0.0.981744:
-    resolution: {integrity: sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==}
-
   dezalgo@1.0.4:
     resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==}

@@ -18980,15 +18923,6 @@ packages:
     resolution: {integrity: sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==}
     engines: {node: 4.x || >=6.0.0}

-  node-fetch@2.6.7:
-    resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==}
-    engines: {node: 4.x || >=6.0.0}
-    peerDependencies:
-      encoding: ^0.1.0
-    peerDependenciesMeta:
-      encoding:
-        optional: true
-
   node-fetch@2.7.0:
     resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
     engines: {node: 4.x || >=6.0.0}
@@ -20311,9 +20245,6 @@ packages:
     peerDependencies:
       postcss: ^8.4.31

-  postcss-resolve-nested-selector@0.1.1:
-    resolution: {integrity: sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==}
-
   postcss-resolve-nested-selector@0.1.6:
     resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==}

@@ -20350,10 +20281,6 @@ packages:
     resolution: {integrity: sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==}
     engines: {node: '>=8'}

-  postcss-selector-parser@6.0.13:
-    resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==}
-    engines: {node: '>=4'}
-
   postcss-selector-parser@6.1.2:
     resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
     engines: {node: '>=4'}
@@ -20677,10 +20604,6 @@ packages:
     resolution: {integrity: sha512-KU8zyb7AIOqNjLCN3wkrFXxh+EVaG+zrs2P03ATNjc3iwSxHsu5/EvZiREpQ/IJiT9xfQbDVgKcsvRuzLCxglQ==}
     engines: {node: '>=10.18.1'}

-  puppeteer-core@13.7.0:
-    resolution: {integrity: sha512-rXja4vcnAzFAP1OVLq/5dWNfwBGuzcOARJ6qGV7oAZhnLmVRU8G5MsdeQEAOy332ZhkIOnn9jp15R89LKHyp2Q==}
-    engines: {node: '>=10.18.1'}
-
   puppeteer-core@2.1.1:
     resolution: {integrity: sha512-n13AWriBMPYxnpbb6bnaY5YoY6rGj8vPLrz6CZF3o0qJNEwlcfJVxBzYZ0NJsQ21UbdJoijPCDrM++SUVEz7+w==}
     engines: {node: '>=8.16.0'}
@@ -20701,6 +20624,7 @@ packages:
     engines: {node: '>=0.6.0', teleport: '>=0.2.0'}
     deprecated: |-
       You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.
+
       (For a CapTP with native promises, see @endo/eventual-send and @endo/captp)

   qqjs@0.3.11:
@@ -22711,10 +22635,6 @@ packages:
     resolution: {integrity: sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==}
     engines: {node: '>=6.0.0'}

-  table@6.8.1:
-    resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==}
-    engines: {node: '>=10.0.0'}
-
   table@6.9.0:
     resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==}
     engines: {node: '>=10.0.0'}
@@ -22863,8 +22783,8 @@ packages:
   third-party-web@0.26.5:
     resolution: {integrity: sha512-tDuKQJUTfjvi9Fcrs1s6YAQAB9mzhTSbBZMfNgtWNmJlHuoFeXO6dzBFdGeCWRvYL50jQGK0jPsBZYxqZQJ2SA==}

-  third-party-web@0.26.7:
-    resolution: {integrity: sha512-buUzX4sXC4efFX6xg2bw6/eZsCUh8qQwSavC4D9HpONMFlRbcHhD8Je5qwYdCpViR6q0qla2wPP+t91a2vgolg==}
+  third-party-web@0.27.0:
+    resolution: {integrity: sha512-h0JYX+dO2Zr3abCQpS6/uFjujaOjA1DyDzGQ41+oFn9VW/ARiq9g5ln7qEP9+BTzDpOMyIfsfj4OvfgXAsMUSA==}

   throat@5.0.0:
     resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==}
@@ -24096,9 +24016,6 @@ packages:
   wp-types@3.63.0:
     resolution: {integrity: sha512-y+v3HPoDmCD5WTIvpB+MnTMK2wwQ7hjvlztOF6EomZoc7GN2rOT7mbSnlyL4pgEyXYFAiRGgv0LoWt94oJetaw==}

-  wp-types@3.66.1:
-    resolution: {integrity: sha512-f0llrGik5sKF38t3sgSFUwU0IQ5ljZwii+rf4gUDv462OiCspuu52uTI9UOPpQqX0JNKUvAAik5Bm/KyYbjkcw==}
-
   wrap-ansi@2.1.0:
     resolution: {integrity: sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==}
     engines: {node: '>=0.10.0'}
@@ -24222,18 +24139,6 @@ packages:
       utf-8-validate:
         optional: true

-  ws@8.5.0:
-    resolution: {integrity: sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==}
-    engines: {node: '>=10.0.0'}
-    peerDependencies:
-      bufferutil: ^4.0.1
-      utf-8-validate: ^5.0.2
-    peerDependenciesMeta:
-      bufferutil:
-        optional: true
-      utf-8-validate:
-        optional: true
-
   x-default-browser@0.4.0:
     resolution: {integrity: sha512-7LKo7RtWfoFN/rHx1UELv/2zHGMx8MkZKDq1xENmOCTkfIqZJ0zZ26NEJX8czhnPXVcqS0ARjjfJB+eJ0/5Cvw==}
     hasBin: true
@@ -24686,7 +24591,7 @@ snapshots:
       '@wordpress/primitives': 3.55.0
       '@wordpress/react-i18n': 3.55.0
       classnames: 2.3.2
-      debug: 4.3.4(supports-color@9.4.0)
+      debug: 4.3.4(supports-color@5.5.0)
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
       react-popper: 2.3.0(@popperjs/core@2.11.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -26160,9 +26065,9 @@ snapshots:
       '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
       '@csstools/css-tokenizer': 3.0.3

-  '@csstools/selector-specificity@2.2.0(postcss-selector-parser@6.0.13)':
+  '@csstools/selector-specificity@2.2.0(postcss-selector-parser@6.1.2)':
     dependencies:
-      postcss-selector-parser: 6.0.13
+      postcss-selector-parser: 6.1.2

   '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.0)':
     dependencies:
@@ -26462,7 +26367,7 @@ snapshots:
   '@eslint/eslintrc@2.1.4':
     dependencies:
       ajv: 6.12.6
-      debug: 4.3.6
+      debug: 4.4.0
       espree: 9.6.1
       globals: 13.24.0
       ignore: 5.3.0
@@ -26535,7 +26440,7 @@ snapshots:
   '@humanwhocodes/config-array@0.11.13':
     dependencies:
       '@humanwhocodes/object-schema': 2.0.1
-      debug: 4.3.6
+      debug: 4.4.0
       minimatch: 3.1.2
     transitivePeerDependencies:
       - supports-color
@@ -27284,7 +27189,7 @@ snapshots:
       jest-haste-map: 27.5.1
       jest-regex-util: 27.5.1
       jest-util: 27.5.1
-      micromatch: 4.0.7
+      micromatch: 4.0.8
       pirates: 4.0.6
       slash: 3.0.0
       source-map: 0.6.1
@@ -27703,7 +27608,7 @@ snapshots:
       '@oclif/color': 1.0.13
       '@oclif/core': 2.15.0(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2)
       chalk: 4.1.2
-      debug: 4.3.4(supports-color@9.4.0)
+      debug: 4.3.4(supports-color@5.5.0)
       fs-extra: 9.1.0
       http-call: 5.3.0
       load-json-file: 5.3.0
@@ -28103,7 +28008,7 @@ snapshots:

   '@paulirish/trace_engine@0.0.39':
     dependencies:
-      third-party-web: 0.26.7
+      third-party-web: 0.27.0

   '@pkgjs/parseargs@0.11.0':
     optional: true
@@ -28183,7 +28088,7 @@ snapshots:
       react-refresh: 0.14.2
       schema-utils: 3.3.0
       source-map: 0.7.4
-      webpack: 5.97.1(@swc/core@1.3.100)(webpack-cli@5.1.4)
+      webpack: 5.97.1(@swc/core@1.3.100)(esbuild@0.18.20)(webpack-cli@5.1.4)
     optionalDependencies:
       '@types/webpack': 4.41.38
       type-fest: 3.13.1
@@ -29846,7 +29751,7 @@ snapshots:
       style-loader: 1.3.0(webpack@4.47.0(webpack-cli@5.1.4))
       terser-webpack-plugin: 4.2.3(webpack@4.47.0(webpack-cli@5.1.4))
       ts-dedent: 2.2.0
-      url-loader: 4.1.1(file-loader@6.2.0(webpack@4.47.0(webpack-cli@5.1.4)))(webpack@4.47.0(webpack-cli@5.1.4))
+      url-loader: 4.1.1(file-loader@6.2.0(webpack@5.97.1))(webpack@4.47.0(webpack-cli@5.1.4))
       util-deprecate: 1.0.2
       webpack: 4.47.0(webpack-cli@5.1.4)
       webpack-dev-middleware: 3.7.3(webpack@4.47.0(webpack-cli@5.1.4))
@@ -29928,11 +29833,11 @@ snapshots:
       '@swc/core': 1.3.100
       '@types/node': 18.19.3
       '@types/semver': 7.5.6
-      babel-loader: 9.2.1(@babel/core@7.25.7)(webpack@5.97.1(@swc/core@1.3.100))
+      babel-loader: 9.2.1(@babel/core@7.25.7)(webpack@5.97.1)
       browser-assert: 1.2.1
       case-sensitive-paths-webpack-plugin: 2.4.0
       constants-browserify: 1.0.0
-      css-loader: 6.11.0(webpack@5.97.1(@swc/core@1.3.100))
+      css-loader: 6.11.0(webpack@5.97.1)
       es-module-lexer: 1.4.1
       express: 4.18.2
       fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.7.2)(webpack@5.97.1)
@@ -30034,7 +29939,7 @@ snapshots:
       '@yarnpkg/libzip': 2.3.0
       chalk: 4.1.2
       commander: 6.2.1
-      cross-spawn: 7.0.3
+      cross-spawn: 7.0.6
       detect-indent: 6.1.0
       envinfo: 7.13.0
       execa: 5.1.1
@@ -30082,7 +29987,7 @@ snapshots:
       '@yarnpkg/libzip': 2.3.0
       chalk: 4.1.2
       commander: 6.2.1
-      cross-spawn: 7.0.3
+      cross-spawn: 7.0.6
       detect-indent: 6.1.0
       envinfo: 7.13.0
       execa: 5.1.1
@@ -30950,7 +30855,7 @@ snapshots:
       telejson: 6.0.8
       terser-webpack-plugin: 4.2.3(webpack@4.47.0(webpack-cli@5.1.4))
       ts-dedent: 2.2.0
-      url-loader: 4.1.1(file-loader@6.2.0(webpack@4.47.0(webpack-cli@5.1.4)))(webpack@4.47.0(webpack-cli@5.1.4))
+      url-loader: 4.1.1(file-loader@6.2.0(webpack@5.97.1))(webpack@4.47.0(webpack-cli@5.1.4))
       util-deprecate: 1.0.2
       webpack: 4.47.0(webpack-cli@5.1.4)
       webpack-dev-middleware: 3.7.3(webpack@4.47.0(webpack-cli@5.1.4))
@@ -31639,18 +31544,18 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)

-  '@stylelint/postcss-css-in-js@0.37.3(postcss-syntax@0.36.2)(postcss@7.0.39)':
+  '@stylelint/postcss-css-in-js@0.37.3(postcss-syntax@0.36.2(postcss-html@0.36.0(postcss-syntax@0.36.2(postcss@8.4.32))(postcss@7.0.39))(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39))(postcss@7.0.39)':
     dependencies:
       '@babel/core': 7.25.7
       postcss: 7.0.39
-      postcss-syntax: 0.36.2(postcss@8.4.32)
+      postcss-syntax: 0.36.2(postcss-html@0.36.0(postcss-syntax@0.36.2(postcss@8.4.32))(postcss@7.0.39))(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39)
     transitivePeerDependencies:
       - supports-color

-  '@stylelint/postcss-markdown@0.36.2(postcss-syntax@0.36.2)(postcss@7.0.39)':
+  '@stylelint/postcss-markdown@0.36.2(postcss-syntax@0.36.2(postcss-html@0.36.0(postcss-syntax@0.36.2(postcss@8.4.32))(postcss@7.0.39))(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39))(postcss@7.0.39)':
     dependencies:
       postcss: 7.0.39
-      postcss-syntax: 0.36.2(postcss@8.4.32)
+      postcss-syntax: 0.36.2(postcss-html@0.36.0(postcss-syntax@0.36.2(postcss@8.4.32))(postcss@7.0.39))(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39)
       remark: 13.0.0
       unist-util-find-all-after: 3.0.2
     transitivePeerDependencies:
@@ -32807,13 +32712,13 @@ snapshots:
       '@types/node': 20.17.8
     optional: true

-  '@typescript-eslint/eslint-plugin@4.33.0(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.7.2))(eslint@7.32.0)(typescript@5.7.2)':
+  '@typescript-eslint/eslint-plugin@4.33.0(@typescript-eslint/parser@4.33.0(eslint@8.55.0)(typescript@5.7.2))(eslint@8.55.0)(typescript@5.7.2)':
     dependencies:
       '@typescript-eslint/experimental-utils': 4.33.0(eslint@7.32.0)(typescript@5.7.2)
       '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@5.7.2)
       '@typescript-eslint/scope-manager': 4.33.0
       debug: 4.4.0
-      eslint: 7.32.0
+      eslint: 8.55.0
       functional-red-black-tree: 1.0.1
       ignore: 5.3.0
       regexpp: 3.2.0
@@ -32831,7 +32736,7 @@ snapshots:
       '@typescript-eslint/scope-manager': 5.56.0
       '@typescript-eslint/type-utils': 5.56.0(eslint@8.55.0)(typescript@5.7.2)
       '@typescript-eslint/utils': 5.56.0(eslint@8.55.0)(typescript@5.7.2)
-      debug: 4.3.4(supports-color@9.4.0)
+      debug: 4.3.4(supports-color@5.5.0)
       eslint: 8.55.0
       grapheme-splitter: 1.0.4
       ignore: 5.3.0
@@ -32850,7 +32755,7 @@ snapshots:
       '@typescript-eslint/scope-manager': 5.62.0
       '@typescript-eslint/type-utils': 5.62.0(eslint@8.55.0)(typescript@5.7.2)
       '@typescript-eslint/utils': 5.62.0(eslint@8.55.0)(typescript@5.7.2)
-      debug: 4.3.4(supports-color@9.4.0)
+      debug: 4.3.4(supports-color@5.5.0)
       eslint: 8.55.0
       graphemer: 1.4.0
       ignore: 5.3.0
@@ -32931,7 +32836,7 @@ snapshots:
       '@typescript-eslint/scope-manager': 5.56.0
       '@typescript-eslint/types': 5.56.0
       '@typescript-eslint/typescript-estree': 5.56.0(typescript@5.7.2)
-      debug: 4.3.4(supports-color@9.4.0)
+      debug: 4.3.4(supports-color@5.5.0)
       eslint: 8.55.0
     optionalDependencies:
       typescript: 5.7.2
@@ -32999,7 +32904,7 @@ snapshots:
     dependencies:
       '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.7.2)
       '@typescript-eslint/utils': 5.62.0(eslint@8.55.0)(typescript@5.7.2)
-      debug: 4.3.6
+      debug: 4.4.0
       eslint: 8.55.0
       tsutils: 3.21.0(typescript@5.7.2)
     optionalDependencies:
@@ -33429,7 +33334,7 @@ snapshots:
   '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.97.1)':
     dependencies:
       webpack: 5.97.1(@swc/core@1.3.100)(webpack-cli@5.1.4)
-      webpack-cli: 5.1.4(webpack-bundle-analyzer@4.9.1)(webpack-dev-server@4.15.1)(webpack@5.97.1)
+      webpack-cli: 5.1.4(webpack@5.97.1)

   '@webpack-cli/info@1.5.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.7.0)(webpack@5.89.0))':
     dependencies:
@@ -33439,7 +33344,7 @@ snapshots:
   '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.97.1)':
     dependencies:
       webpack: 5.97.1(@swc/core@1.3.100)(webpack-cli@5.1.4)
-      webpack-cli: 5.1.4(webpack-bundle-analyzer@4.9.1)(webpack-dev-server@4.15.1)(webpack@5.97.1)
+      webpack-cli: 5.1.4(webpack@5.97.1)

   '@webpack-cli/serve@1.7.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.7.0)(webpack@5.89.0))':
     dependencies:
@@ -33448,9 +33353,9 @@ snapshots:
   '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack-dev-server@4.15.1)(webpack@5.97.1)':
     dependencies:
       webpack: 5.97.1(@swc/core@1.3.100)(webpack-cli@5.1.4)
-      webpack-cli: 5.1.4(webpack-bundle-analyzer@4.9.1)(webpack-dev-server@4.15.1)(webpack@5.97.1)
+      webpack-cli: 5.1.4(webpack-dev-server@4.15.1)(webpack@5.97.1)
     optionalDependencies:
-      webpack-dev-server: 4.15.1(debug@4.3.4)(webpack-cli@5.1.4)(webpack@5.97.1)
+      webpack-dev-server: 4.15.1(webpack-cli@5.1.4)(webpack@5.97.1)

   '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.97.1)':
     dependencies:
@@ -35444,13 +35349,13 @@ snapshots:
   '@wordpress/dependency-extraction-webpack-plugin@3.7.0(webpack@5.97.1)':
     dependencies:
       json2php: 0.0.4
-      webpack: 5.97.1(@swc/core@1.3.100)(webpack-cli@5.1.4)
+      webpack: 5.97.1(@swc/core@1.3.100)
       webpack-sources: 3.2.3

   '@wordpress/dependency-extraction-webpack-plugin@6.13.1-next.a9f418477.0(webpack@5.97.1)':
     dependencies:
       json2php: 0.0.7
-      webpack: 5.97.1(@swc/core@1.3.100)(esbuild@0.18.20)(webpack-cli@5.1.4)
+      webpack: 5.97.1(@swc/core@1.3.100)(webpack-cli@5.1.4)

   '@wordpress/dependency-extraction-webpack-plugin@6.22.0(webpack@5.97.1)':
     dependencies:
@@ -36165,37 +36070,6 @@ snapshots:
       - jest
       - supports-color

-  '@wordpress/eslint-plugin@19.2.0(@babel/core@7.25.7)(@types/eslint@8.44.8)(eslint@8.55.0)(jest@29.7.0(@types/node@20.17.8)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2)))(typescript@5.7.2)(wp-prettier@3.0.3)':
-    dependencies:
-      '@babel/core': 7.25.7
-      '@babel/eslint-parser': 7.23.3(@babel/core@7.25.7)(eslint@8.55.0)
-      '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.55.0)(typescript@5.7.2))(eslint@8.55.0)(typescript@5.7.2)
-      '@typescript-eslint/parser': 6.21.0(eslint@8.55.0)(typescript@5.7.2)
-      '@wordpress/babel-preset-default': 8.13.0
-      '@wordpress/prettier-config': 4.18.0(wp-prettier@3.0.3)
-      cosmiconfig: 7.1.0
-      eslint: 8.55.0
-      eslint-config-prettier: 8.10.0(eslint@8.55.0)
-      eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.21.0(eslint@8.55.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.6.1)(eslint-import-resolver-webpack@0.13.2)(eslint@8.55.0)
-      eslint-plugin-jest: 27.6.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.55.0)(typescript@5.7.2))(eslint@8.55.0)(typescript@5.7.2))(eslint@8.55.0)(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2)))(typescript@5.7.2)
-      eslint-plugin-jsdoc: 46.10.1(eslint@8.55.0)
-      eslint-plugin-jsx-a11y: 6.8.0(eslint@8.55.0)
-      eslint-plugin-playwright: 0.15.3(eslint-plugin-jest@27.6.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.55.0)(typescript@5.7.2))(eslint@8.55.0)(typescript@5.7.2))(eslint@8.55.0)(jest@29.7.0(@types/node@20.17.8)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2)))(typescript@5.7.2))(eslint@8.55.0)
-      eslint-plugin-prettier: 5.2.3(@types/eslint@8.44.8)(eslint-config-prettier@8.10.0(eslint@8.55.0))(eslint@8.55.0)(wp-prettier@3.0.3)
-      eslint-plugin-react: 7.33.2(eslint@8.55.0)
-      eslint-plugin-react-hooks: 4.6.0(eslint@8.55.0)
-      globals: 13.24.0
-      requireindex: 1.2.0
-    optionalDependencies:
-      prettier: wp-prettier@3.0.3
-      typescript: 5.7.2
-    transitivePeerDependencies:
-      - '@types/eslint'
-      - eslint-import-resolver-typescript
-      - eslint-import-resolver-webpack
-      - jest
-      - supports-color
-
   '@wordpress/eslint-plugin@22.8.0(@babel/core@7.25.7)(@types/eslint@8.44.8)(eslint-import-resolver-typescript@3.6.1)(eslint-import-resolver-webpack@0.13.2)(eslint@8.55.0)(jest@29.7.0(@types/node@20.17.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2)))(typescript@5.7.2)(wp-prettier@3.0.3)':
     dependencies:
       '@babel/core': 7.25.7
@@ -36230,7 +36104,7 @@ snapshots:
   '@wordpress/eslint-plugin@9.3.0(@babel/core@7.25.7)(eslint@7.32.0)(typescript@5.7.2)':
     dependencies:
       '@babel/eslint-parser': 7.23.3(@babel/core@7.25.7)(eslint@7.32.0)
-      '@typescript-eslint/eslint-plugin': 4.33.0(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.7.2))(eslint@7.32.0)(typescript@5.7.2)
+      '@typescript-eslint/eslint-plugin': 4.33.0(@typescript-eslint/parser@4.33.0(eslint@8.55.0)(typescript@5.7.2))(eslint@8.55.0)(typescript@5.7.2)
       '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@5.7.2)
       '@wordpress/prettier-config': 1.4.0(wp-prettier@2.2.1-beta-1)
       cosmiconfig: 7.1.0
@@ -36704,12 +36578,6 @@ snapshots:
       jest: 29.7.0(@types/node@20.17.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2))
       jest-matcher-utils: 29.7.0

-  '@wordpress/jest-console@8.22.0(jest@29.7.0(@types/node@20.17.8)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2)))':
-    dependencies:
-      '@babel/runtime': 7.25.7
-      jest: 29.7.0(@types/node@20.17.8)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2))
-      jest-matcher-utils: 29.7.0
-
   '@wordpress/jest-preset-default@12.22.0(@babel/core@7.25.7)(jest@29.5.0(@types/node@20.17.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2)))':
     dependencies:
       '@babel/core': 7.25.7
@@ -36728,15 +36596,6 @@ snapshots:
     transitivePeerDependencies:
       - supports-color

-  '@wordpress/jest-preset-default@12.22.0(@babel/core@7.25.7)(jest@29.7.0(@types/node@20.17.8)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2)))':
-    dependencies:
-      '@babel/core': 7.25.7
-      '@wordpress/jest-console': 8.22.0(jest@29.7.0(@types/node@20.17.8)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2)))
-      babel-jest: 29.7.0(@babel/core@7.25.7)
-      jest: 29.7.0(@types/node@20.17.8)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2))
-    transitivePeerDependencies:
-      - supports-color
-
   '@wordpress/jest-preset-default@7.1.3(@babel/core@7.25.7)(jest@26.6.3(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@22.9.1)(typescript@5.7.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
       '@wojtekmaj/enzyme-adapter-react-17': 0.6.7(enzyme@3.11.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -36912,10 +36771,6 @@ snapshots:
     dependencies:
       npm-package-json-lint: 6.4.0(typescript@5.7.2)

-  '@wordpress/npm-package-json-lint-config@5.18.0(npm-package-json-lint@6.4.0(typescript@5.7.2))':
-    dependencies:
-      npm-package-json-lint: 6.4.0(typescript@5.7.2)
-
   '@wordpress/npm-package-json-lint-config@5.22.0(npm-package-json-lint@6.4.0(typescript@5.7.2))':
     dependencies:
       npm-package-json-lint: 6.4.0(typescript@5.7.2)
@@ -37162,10 +37017,6 @@ snapshots:
     dependencies:
       prettier: wp-prettier@3.0.3

-  '@wordpress/prettier-config@4.18.0(wp-prettier@3.0.3)':
-    dependencies:
-      prettier: wp-prettier@3.0.3
-
   '@wordpress/prettier-config@4.22.0(wp-prettier@3.0.3)':
     dependencies:
       prettier: wp-prettier@3.0.3
@@ -37580,99 +37431,6 @@ snapshots:
       - utf-8-validate
       - webpack-dev-server

-  '@wordpress/scripts@28.0.2(@playwright/test@1.50.1)(@swc/core@1.3.100)(@types/eslint@8.44.8)(@types/node@20.17.8)(@types/webpack@4.41.38)(encoding@0.1.13)(file-loader@6.2.0(webpack@5.97.1))(node-notifier@8.0.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2))(type-fest@3.13.1)(typescript@5.7.2)(webpack-hot-middleware@2.25.4)':
-    dependencies:
-      '@babel/core': 7.25.7
-      '@playwright/test': 1.50.1
-      '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(@types/webpack@4.41.38)(react-refresh@0.14.2)(type-fest@3.13.1)(webpack-dev-server@4.15.1)(webpack-hot-middleware@2.25.4)(webpack@5.97.1)
-      '@svgr/webpack': 8.1.0(typescript@5.7.2)
-      '@wordpress/babel-preset-default': 8.13.0
-      '@wordpress/browserslist-config': 6.0.1
-      '@wordpress/dependency-extraction-webpack-plugin': 6.22.0(webpack@5.97.1)
-      '@wordpress/e2e-test-utils-playwright': 1.19.1(@playwright/test@1.50.1)
-      '@wordpress/eslint-plugin': 19.2.0(@babel/core@7.25.7)(@types/eslint@8.44.8)(eslint@8.55.0)(jest@29.7.0(@types/node@20.17.8)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2)))(typescript@5.7.2)(wp-prettier@3.0.3)
-      '@wordpress/jest-preset-default': 12.22.0(@babel/core@7.25.7)(jest@29.7.0(@types/node@20.17.8)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2)))
-      '@wordpress/npm-package-json-lint-config': 5.18.0(npm-package-json-lint@6.4.0(typescript@5.7.2))
-      '@wordpress/postcss-plugins-preset': 5.0.1(postcss@8.4.49)
-      '@wordpress/prettier-config': 4.18.0(wp-prettier@3.0.3)
-      '@wordpress/stylelint-config': 22.7.0(postcss@8.4.49)(stylelint@14.16.1)
-      adm-zip: 0.5.10
-      babel-jest: 29.7.0(@babel/core@7.25.7)
-      babel-loader: 8.3.0(@babel/core@7.25.7)(webpack@5.97.1)
-      browserslist: 4.24.2
-      chalk: 4.1.2
-      check-node-version: 4.2.1
-      clean-webpack-plugin: 3.0.0(webpack@5.97.1)
-      copy-webpack-plugin: 10.2.4(webpack@5.97.1)
-      cross-spawn: 5.1.0
-      css-loader: 6.11.0(webpack@5.97.1(@swc/core@1.3.100))
-      cssnano: 6.1.2(postcss@8.4.49)
-      cwd: 0.10.0
-      dir-glob: 3.0.1
-      eslint: 8.55.0
-      expect-puppeteer: 4.4.0
-      fast-glob: 3.3.2
-      filenamify: 4.3.0
-      jest: 29.7.0(@types/node@20.17.8)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2))
-      jest-dev-server: 9.0.2
-      jest-environment-jsdom: 29.7.0
-      jest-environment-node: 29.7.0
-      markdownlint-cli: 0.31.1
-      merge-deep: 3.0.3
-      mini-css-extract-plugin: 2.9.2(webpack@5.97.1(@swc/core@1.3.100))
-      minimist: 1.2.8
-      npm-package-json-lint: 6.4.0(typescript@5.7.2)
-      npm-packlist: 3.0.0
-      postcss: 8.4.49
-      postcss-loader: 6.2.1(postcss@8.4.49)(webpack@5.97.1)
-      prettier: wp-prettier@3.0.3
-      puppeteer-core: 13.7.0(encoding@0.1.13)
-      react: 18.3.1
-      react-dom: 18.3.1(react@18.3.1)
-      react-refresh: 0.14.2
-      read-pkg-up: 7.0.1
-      resolve-bin: 0.4.3
-      rtlcss-webpack-plugin: 4.0.7
-      sass: 1.69.5
-      sass-loader: 12.6.0(sass@1.69.5)(webpack@5.97.1)
-      source-map-loader: 3.0.2(webpack@5.97.1)
-      stylelint: 14.16.1
-      terser-webpack-plugin: 5.3.11(@swc/core@1.3.100)(webpack@5.97.1)
-      url-loader: 4.1.1(file-loader@6.2.0(webpack@5.97.1))(webpack@5.97.1)
-      webpack: 5.97.1(@swc/core@1.3.100)(webpack-cli@5.1.4)
-      webpack-bundle-analyzer: 4.9.1
-      webpack-cli: 5.1.4(webpack-bundle-analyzer@4.9.1)(webpack-dev-server@4.15.1)(webpack@5.97.1)
-      webpack-dev-server: 4.15.1(webpack-cli@5.1.4)(webpack@5.97.1)
-    transitivePeerDependencies:
-      - '@rspack/core'
-      - '@swc/core'
-      - '@types/eslint'
-      - '@types/node'
-      - '@types/webpack'
-      - '@webpack-cli/generators'
-      - babel-plugin-macros
-      - bufferutil
-      - canvas
-      - debug
-      - encoding
-      - esbuild
-      - eslint-import-resolver-typescript
-      - eslint-import-resolver-webpack
-      - fibers
-      - file-loader
-      - node-notifier
-      - node-sass
-      - sass-embedded
-      - sockjs-client
-      - supports-color
-      - ts-node
-      - type-fest
-      - typescript
-      - uglify-js
-      - utf-8-validate
-      - webpack-hot-middleware
-      - webpack-plugin-serve
-
   '@wordpress/scripts@30.13.0(@playwright/test@1.50.1)(@swc/core@1.3.100)(@types/eslint@8.44.8)(@types/node@20.17.8)(@types/webpack@4.41.38)(babel-plugin-macros@3.1.0)(esbuild@0.18.20)(eslint-import-resolver-typescript@3.6.1)(eslint-import-resolver-webpack@0.13.2)(file-loader@6.2.0(webpack@5.97.1))(node-notifier@8.0.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint-scss@6.11.1(stylelint@16.11.0(typescript@5.7.2)))(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2))(type-fest@3.13.1)(typescript@5.7.2)(webpack-hot-middleware@2.25.4)':
     dependencies:
       '@babel/core': 7.25.7
@@ -37691,14 +37449,14 @@ snapshots:
       '@wordpress/stylelint-config': 23.14.0(postcss@8.4.49)(stylelint-scss@6.11.1(stylelint@16.11.0(typescript@5.7.2)))(stylelint@16.11.0(typescript@5.7.2))
       adm-zip: 0.5.10
       babel-jest: 29.7.0(@babel/core@7.25.7)
-      babel-loader: 9.2.1(@babel/core@7.25.7)(webpack@5.97.1(@swc/core@1.3.100))
+      babel-loader: 9.2.1(@babel/core@7.25.7)(webpack@5.97.1)
       browserslist: 4.24.4
       chalk: 4.1.2
       check-node-version: 4.2.1
       clean-webpack-plugin: 3.0.0(webpack@5.97.1)
       copy-webpack-plugin: 10.2.4(webpack@5.97.1)
       cross-spawn: 7.0.6
-      css-loader: 6.11.0(webpack@5.97.1(@swc/core@1.3.100))
+      css-loader: 6.11.0(webpack@5.97.1)
       cssnano: 6.1.2(postcss@8.4.49)
       cwd: 0.10.0
       dir-glob: 3.0.1
@@ -37713,7 +37471,7 @@ snapshots:
       json2php: 0.0.9
       markdownlint-cli: 0.31.1
       merge-deep: 3.0.3
-      mini-css-extract-plugin: 2.9.2(webpack@5.97.1(@swc/core@1.3.100))
+      mini-css-extract-plugin: 2.9.2(webpack@5.97.1)
       minimist: 1.2.8
       npm-package-json-lint: 6.4.0(typescript@5.7.2)
       npm-packlist: 3.0.0
@@ -37785,7 +37543,7 @@ snapshots:
       '@wordpress/stylelint-config': 21.36.0(postcss@8.4.32)(stylelint@16.11.0(typescript@5.7.2))
       adm-zip: 0.5.10
       babel-jest: 29.7.0(@babel/core@7.25.7)
-      babel-loader: 9.2.1(@babel/core@7.25.7)(webpack@5.97.1(@swc/core@1.3.100))
+      babel-loader: 9.2.1(@babel/core@7.25.7)(webpack@5.97.1)
       browserslist: 4.24.2
       chalk: 4.1.2
       check-node-version: 4.2.1
@@ -37827,10 +37585,10 @@ snapshots:
       stylelint: 16.11.0(typescript@5.7.2)
       terser-webpack-plugin: 5.3.11(@swc/core@1.3.100)(webpack@5.97.1)
       url-loader: 4.1.1(file-loader@6.2.0(webpack@5.97.1))(webpack@5.97.1)
-      webpack: 5.97.1(@swc/core@1.3.100)(webpack-cli@5.1.4)
+      webpack: 5.97.1(@swc/core@1.3.100)
       webpack-bundle-analyzer: 4.10.2
       webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.97.1)
-      webpack-dev-server: 4.15.1(webpack-cli@5.1.4)(webpack@5.97.1)
+      webpack-dev-server: 4.15.1(webpack@5.97.1)
     transitivePeerDependencies:
       - '@swc/core'
       - '@types/node'
@@ -37984,14 +37742,6 @@ snapshots:
     transitivePeerDependencies:
       - postcss

-  '@wordpress/stylelint-config@22.7.0(postcss@8.4.49)(stylelint@14.16.1)':
-    dependencies:
-      stylelint: 14.16.1
-      stylelint-config-recommended: 6.0.0(stylelint@14.16.1)
-      stylelint-config-recommended-scss: 5.0.2(postcss@8.4.49)(stylelint@14.16.1)
-    transitivePeerDependencies:
-      - postcss
-
   '@wordpress/stylelint-config@23.14.0(postcss@8.4.49)(stylelint-scss@6.11.1(stylelint@16.11.0(typescript@5.7.2)))(stylelint@16.11.0(typescript@5.7.2))':
     dependencies:
       '@stylistic/stylelint-plugin': 3.1.2(stylelint@16.11.0(typescript@5.7.2))
@@ -38362,9 +38112,9 @@ snapshots:
     dependencies:
       acorn: 7.4.1

-  acorn-jsx@5.3.2(acorn@8.11.2):
+  acorn-jsx@5.3.2(acorn@8.14.0):
     dependencies:
-      acorn: 8.11.2
+      acorn: 8.14.0

   acorn-walk@7.2.0: {}

@@ -39064,15 +38814,6 @@ snapshots:
       schema-utils: 2.7.1
       webpack: 5.89.0(@swc/core@1.3.100)(uglify-js@3.17.4)(webpack-cli@4.10.0)

-  babel-loader@8.3.0(@babel/core@7.25.7)(webpack@5.97.1):
-    dependencies:
-      '@babel/core': 7.25.7
-      find-cache-dir: 3.3.2
-      loader-utils: 2.0.4
-      make-dir: 3.1.0
-      schema-utils: 2.7.1
-      webpack: 5.97.1(@swc/core@1.3.100)(webpack-cli@5.1.4)
-
   babel-loader@9.2.1(@babel/core@7.25.7)(webpack@5.97.1(@swc/core@1.3.100)(esbuild@0.18.20)):
     dependencies:
       '@babel/core': 7.25.7
@@ -39081,6 +38822,13 @@ snapshots:
       webpack: 5.97.1(@swc/core@1.3.100)(esbuild@0.18.20)

   babel-loader@9.2.1(@babel/core@7.25.7)(webpack@5.97.1(@swc/core@1.3.100)):
+    dependencies:
+      '@babel/core': 7.25.7
+      find-cache-dir: 4.0.0
+      schema-utils: 4.3.0
+      webpack: 5.97.1(@swc/core@1.3.100)
+
+  babel-loader@9.2.1(@babel/core@7.25.7)(webpack@5.97.1):
     dependencies:
       '@babel/core': 7.25.7
       find-cache-dir: 4.0.0
@@ -40097,7 +39845,7 @@ snapshots:
     dependencies:
       '@types/webpack': 4.41.38
       del: 4.1.1
-      webpack: 5.97.1(@swc/core@1.3.100)(webpack-cli@5.1.4)
+      webpack: 5.97.1(@swc/core@1.3.100)(esbuild@0.18.20)(webpack-cli@5.1.4)

   cli-boxes@1.0.0: {}

@@ -40520,15 +40268,24 @@ snapshots:

   copy-webpack-plugin@10.2.4(webpack@5.97.1):
     dependencies:
-      fast-glob: 3.3.2
+      fast-glob: 3.3.3
       glob-parent: 6.0.2
       globby: 12.2.0
       normalize-path: 3.0.0
       schema-utils: 4.2.0
       serialize-javascript: 6.0.1
-      webpack: 5.97.1(@swc/core@1.3.100)(webpack-cli@5.1.4)
+      webpack: 5.97.1(@swc/core@1.3.100)(esbuild@0.18.20)(webpack-cli@5.1.4)

   copy-webpack-plugin@13.0.0(webpack@5.97.1(@swc/core@1.3.100)):
+    dependencies:
+      glob-parent: 6.0.2
+      normalize-path: 3.0.0
+      schema-utils: 4.3.0
+      serialize-javascript: 6.0.2
+      tinyglobby: 0.2.12
+      webpack: 5.97.1(@swc/core@1.3.100)
+
+  copy-webpack-plugin@13.0.0(webpack@5.97.1):
     dependencies:
       glob-parent: 6.0.2
       normalize-path: 3.0.0
@@ -40687,12 +40444,6 @@ snapshots:

   create-require@1.1.1: {}

-  cross-fetch@3.1.5(encoding@0.1.13):
-    dependencies:
-      node-fetch: 2.6.7(encoding@0.1.13)
-    transitivePeerDependencies:
-      - encoding
-
   cross-fetch@3.1.8(encoding@0.1.13):
     dependencies:
       node-fetch: 2.7.0(encoding@0.1.13)
@@ -40780,8 +40531,6 @@ snapshots:
     dependencies:
       postcss: 8.4.49

-  css-functions-list@3.2.1: {}
-
   css-functions-list@3.2.3: {}

   css-loader@3.6.0(webpack@4.47.0(webpack-cli@5.1.4)):
@@ -40815,6 +40564,19 @@ snapshots:
       webpack: 5.97.1(@swc/core@1.3.100)(esbuild@0.18.20)

   css-loader@6.11.0(webpack@5.97.1(@swc/core@1.3.100)):
+    dependencies:
+      icss-utils: 5.1.0(postcss@8.4.49)
+      postcss: 8.4.49
+      postcss-modules-extract-imports: 3.1.0(postcss@8.4.49)
+      postcss-modules-local-by-default: 4.2.0(postcss@8.4.49)
+      postcss-modules-scope: 3.2.1(postcss@8.4.49)
+      postcss-modules-values: 4.0.0(postcss@8.4.49)
+      postcss-value-parser: 4.2.0
+      semver: 7.6.3
+    optionalDependencies:
+      webpack: 5.97.1(@swc/core@1.3.100)
+
+  css-loader@6.11.0(webpack@5.97.1):
     dependencies:
       icss-utils: 5.1.0(postcss@8.4.49)
       postcss: 8.4.49
@@ -40849,7 +40611,7 @@ snapshots:
       postcss-modules-values: 4.0.0(postcss@8.4.49)
       postcss-value-parser: 4.2.0
       semver: 7.6.3
-      webpack: 5.97.1(@swc/core@1.3.100)(webpack-cli@5.1.4)
+      webpack: 5.97.1(@swc/core@1.3.100)

   css-select-base-adapter@0.1.1: {}

@@ -41284,10 +41046,6 @@ snapshots:
     dependencies:
       ms: 2.1.2

-  debug@4.3.7:
-    dependencies:
-      ms: 2.1.3
-
   debug@4.4.0:
     dependencies:
       ms: 2.1.3
@@ -41498,8 +41256,6 @@ snapshots:

   devtools-protocol@0.0.901419: {}

-  devtools-protocol@0.0.981744: {}
-
   dezalgo@1.0.4:
     dependencies:
       asap: 2.0.6
@@ -42098,7 +41854,7 @@ snapshots:

   eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.56.0(eslint@8.55.0)(typescript@5.7.2))(eslint-import-resolver-webpack@0.13.2)(eslint-plugin-import@2.28.1)(eslint@8.55.0):
     dependencies:
-      debug: 4.3.4(supports-color@9.4.0)
+      debug: 4.3.4(supports-color@5.5.0)
       enhanced-resolve: 5.15.0
       eslint: 8.55.0
       eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.56.0(eslint@8.55.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint-import-resolver-webpack@0.13.2)(eslint@8.55.0)
@@ -42115,7 +41871,7 @@ snapshots:

   eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.55.0)(typescript@5.7.2))(eslint-import-resolver-webpack@0.13.8)(eslint-plugin-import@2.29.0)(eslint@8.55.0):
     dependencies:
-      debug: 4.3.4(supports-color@9.4.0)
+      debug: 4.3.4(supports-color@5.5.0)
       enhanced-resolve: 5.15.0
       eslint: 8.55.0
       eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0(eslint@8.55.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint-import-resolver-webpack@0.13.8)(eslint@8.55.0)
@@ -42333,7 +42089,7 @@ snapshots:
       '@typescript-eslint/experimental-utils': 4.33.0(eslint@7.32.0)(typescript@5.7.2)
       eslint: 7.32.0
     optionalDependencies:
-      '@typescript-eslint/eslint-plugin': 4.33.0(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.7.2))(eslint@7.32.0)(typescript@5.7.2)
+      '@typescript-eslint/eslint-plugin': 4.33.0(@typescript-eslint/parser@4.33.0(eslint@8.55.0)(typescript@5.7.2))(eslint@8.55.0)(typescript@5.7.2)
     transitivePeerDependencies:
       - supports-color
       - typescript
@@ -42382,17 +42138,6 @@ snapshots:
       - supports-color
       - typescript

-  eslint-plugin-jest@27.6.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.55.0)(typescript@5.7.2))(eslint@8.55.0)(typescript@5.7.2))(eslint@8.55.0)(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2)))(typescript@5.7.2):
-    dependencies:
-      '@typescript-eslint/utils': 5.62.0(eslint@8.55.0)(typescript@5.7.2)
-      eslint: 8.55.0
-    optionalDependencies:
-      '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.55.0)(typescript@5.7.2))(eslint@8.55.0)(typescript@5.7.2)
-      jest: 27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2))
-    transitivePeerDependencies:
-      - supports-color
-      - typescript
-
   eslint-plugin-jsdoc@36.1.1(eslint@7.32.0):
     dependencies:
       '@es-joy/jsdoccomment': 0.10.8
@@ -42489,12 +42234,6 @@ snapshots:
     optionalDependencies:
       eslint-plugin-jest: 27.6.0(@typescript-eslint/eslint-plugin@5.56.0(@typescript-eslint/parser@5.56.0(eslint@8.55.0)(typescript@5.7.2))(eslint@8.55.0)(typescript@5.7.2))(eslint@8.55.0)(jest@29.5.0(@types/node@20.17.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2)))(typescript@5.7.2)

-  eslint-plugin-playwright@0.15.3(eslint-plugin-jest@27.6.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.55.0)(typescript@5.7.2))(eslint@8.55.0)(typescript@5.7.2))(eslint@8.55.0)(jest@29.7.0(@types/node@20.17.8)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2)))(typescript@5.7.2))(eslint@8.55.0):
-    dependencies:
-      eslint: 8.55.0
-    optionalDependencies:
-      eslint-plugin-jest: 27.6.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.55.0)(typescript@5.7.2))(eslint@8.55.0)(typescript@5.7.2))(eslint@8.55.0)(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2)))(typescript@5.7.2)
-
   eslint-plugin-playwright@0.22.1(eslint-plugin-jest@23.20.0(eslint@8.55.0)(typescript@5.7.2))(eslint@8.55.0):
     dependencies:
       eslint: 8.55.0
@@ -42706,8 +42445,8 @@ snapshots:
       '@humanwhocodes/config-array': 0.5.0
       ajv: 6.12.6
       chalk: 4.1.2
-      cross-spawn: 7.0.3
-      debug: 4.3.6
+      cross-spawn: 7.0.6
+      debug: 4.4.0
       doctrine: 3.0.0
       enquirer: 2.4.1
       escape-string-regexp: 4.0.0
@@ -42738,7 +42477,7 @@ snapshots:
       semver: 7.6.3
       strip-ansi: 6.0.1
       strip-json-comments: 3.1.1
-      table: 6.8.1
+      table: 6.9.0
       text-table: 0.2.0
       v8-compile-cache: 2.4.0
     transitivePeerDependencies:
@@ -42756,8 +42495,8 @@ snapshots:
       '@ungap/structured-clone': 1.2.0
       ajv: 6.12.6
       chalk: 4.1.2
-      cross-spawn: 7.0.3
-      debug: 4.3.6
+      cross-spawn: 7.0.6
+      debug: 4.4.0
       doctrine: 3.0.0
       escape-string-regexp: 4.0.0
       eslint-scope: 7.2.2
@@ -42801,8 +42540,8 @@ snapshots:

   espree@9.6.1:
     dependencies:
-      acorn: 8.11.2
-      acorn-jsx: 5.3.2(acorn@8.11.2)
+      acorn: 8.14.0
+      acorn-jsx: 5.3.2(acorn@8.14.0)
       eslint-visitor-keys: 3.4.3

   esprima@2.7.3: {}
@@ -42899,7 +42638,7 @@ snapshots:

   execa@5.1.1:
     dependencies:
-      cross-spawn: 7.0.3
+      cross-spawn: 7.0.6
       get-stream: 6.0.1
       human-signals: 2.1.0
       is-stream: 2.0.1
@@ -42911,7 +42650,7 @@ snapshots:

   execa@7.2.0:
     dependencies:
-      cross-spawn: 7.0.3
+      cross-spawn: 7.0.6
       get-stream: 6.0.1
       human-signals: 4.3.1
       is-stream: 3.0.0
@@ -43223,7 +42962,7 @@ snapshots:
     dependencies:
       loader-utils: 2.0.4
       schema-utils: 3.3.0
-      webpack: 5.97.1(@swc/core@1.3.100)(webpack-cli@5.1.4)
+      webpack: 5.97.1(@swc/core@1.3.100)(esbuild@0.18.20)(webpack-cli@5.1.4)
     optional: true

   file-sync-cmp@0.1.1: {}
@@ -43431,7 +43170,7 @@ snapshots:

   follow-redirects@1.15.6(debug@4.3.4):
     optionalDependencies:
-      debug: 4.3.4(supports-color@9.4.0)
+      debug: 4.3.4(supports-color@5.5.0)

   for-each@0.3.3:
     dependencies:
@@ -43456,7 +43195,7 @@ snapshots:

   foreground-child@3.1.1:
     dependencies:
-      cross-spawn: 7.0.3
+      cross-spawn: 7.0.6
       signal-exit: 4.1.0

   forever-agent@0.6.1: {}
@@ -43532,6 +43271,23 @@ snapshots:
       webpack: 5.97.1(@swc/core@1.3.100)(esbuild@0.18.20)(webpack-cli@5.1.4)

   fork-ts-checker-webpack-plugin@9.0.2(typescript@5.7.2)(webpack@5.97.1(@swc/core@1.3.100)):
+    dependencies:
+      '@babel/code-frame': 7.24.7
+      chalk: 4.1.2
+      chokidar: 3.5.3
+      cosmiconfig: 8.3.6(typescript@5.7.2)
+      deepmerge: 4.3.1
+      fs-extra: 10.1.0
+      memfs: 3.5.3
+      minimatch: 3.1.2
+      node-abort-controller: 3.1.1
+      schema-utils: 3.3.0
+      semver: 7.6.3
+      tapable: 2.2.1
+      typescript: 5.7.2
+      webpack: 5.97.1(@swc/core@1.3.100)
+
+  fork-ts-checker-webpack-plugin@9.0.2(typescript@5.7.2)(webpack@5.97.1):
     dependencies:
       '@babel/code-frame': 7.24.7
       chalk: 4.1.2
@@ -43974,7 +43730,7 @@ snapshots:
       '@types/glob': 7.2.0
       array-union: 2.1.0
       dir-glob: 3.0.1
-      fast-glob: 3.3.2
+      fast-glob: 3.3.3
       glob: 7.2.3
       ignore: 5.3.0
       merge2: 1.4.1
@@ -43984,7 +43740,7 @@ snapshots:
     dependencies:
       array-union: 2.1.0
       dir-glob: 3.0.1
-      fast-glob: 3.3.2
+      fast-glob: 3.3.3
       ignore: 5.3.0
       merge2: 1.4.1
       slash: 3.0.0
@@ -43993,7 +43749,7 @@ snapshots:
     dependencies:
       array-union: 3.0.1
       dir-glob: 3.0.1
-      fast-glob: 3.3.2
+      fast-glob: 3.3.3
       ignore: 5.3.0
       merge2: 1.4.1
       slash: 4.0.0
@@ -45683,7 +45439,7 @@ snapshots:
       jest-environment-jsdom: 26.6.2
       jest-environment-node: 26.6.2
       jest-get-type: 26.3.0
-      jest-jasmine2: 26.6.3
+      jest-jasmine2: 26.6.3(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@22.9.1)(typescript@5.7.2))
       jest-regex-util: 26.0.0
       jest-resolve: 26.6.2
       jest-util: 26.6.2
@@ -46093,7 +45849,7 @@ snapshots:
     optionalDependencies:
       fsevents: 2.3.3

-  jest-jasmine2@26.6.3:
+  jest-jasmine2@26.6.3(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@22.9.1)(typescript@5.7.2)):
     dependencies:
       '@babel/traverse': 7.25.9
       '@jest/environment': 26.6.2
@@ -46114,7 +45870,11 @@ snapshots:
       pretty-format: 26.6.2
       throat: 5.0.0
     transitivePeerDependencies:
+      - bufferutil
+      - canvas
       - supports-color
+      - ts-node
+      - utf-8-validate

   jest-jasmine2@27.5.1:
     dependencies:
@@ -46732,20 +46492,6 @@ snapshots:
       - supports-color
       - ts-node

-  jest@29.7.0(@types/node@20.17.8)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2)):
-    dependencies:
-      '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2))
-      '@jest/types': 29.6.3
-      import-local: 3.1.0
-      jest-cli: 29.7.0(@types/node@20.17.8)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2))
-    optionalDependencies:
-      node-notifier: 8.0.2
-    transitivePeerDependencies:
-      - '@types/node'
-      - babel-plugin-macros
-      - supports-color
-      - ts-node
-
   jest@29.7.0(@types/node@22.9.1)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@22.9.1)(typescript@5.7.2)):
     dependencies:
       '@jest/core': 29.7.0(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@22.9.1)(typescript@5.7.2))
@@ -47307,7 +47053,7 @@ snapshots:
       chalk: 5.2.0
       cli-truncate: 3.1.0
       commander: 10.0.1
-      debug: 4.3.4(supports-color@9.4.0)
+      debug: 4.3.4(supports-color@5.5.0)
       execa: 7.2.0
       lilconfig: 2.1.0
       listr2: 5.0.8(enquirer@2.4.1)
@@ -48259,9 +48005,15 @@ snapshots:
   mini-css-extract-plugin@2.7.6(webpack@5.97.1):
     dependencies:
       schema-utils: 4.2.0
-      webpack: 5.97.1(@swc/core@1.3.100)(webpack-cli@5.1.4)
+      webpack: 5.97.1(@swc/core@1.3.100)

   mini-css-extract-plugin@2.9.2(webpack@5.97.1(@swc/core@1.3.100)):
+    dependencies:
+      schema-utils: 4.3.0
+      tapable: 2.2.1
+      webpack: 5.97.1(@swc/core@1.3.100)
+
+  mini-css-extract-plugin@2.9.2(webpack@5.97.1):
     dependencies:
       schema-utils: 4.3.0
       tapable: 2.2.1
@@ -48500,7 +48252,7 @@ snapshots:
     dependencies:
       carlo: 0.9.46
       chokidar: 3.5.3
-      debug: 4.3.4(supports-color@9.4.0)
+      debug: 4.3.4(supports-color@5.5.0)
       isbinaryfile: 3.0.3
       mime: 2.6.0
       opn: 5.5.0
@@ -48559,12 +48311,6 @@ snapshots:

   node-fetch@2.6.1: {}

-  node-fetch@2.6.7(encoding@0.1.13):
-    dependencies:
-      whatwg-url: 5.0.0
-    optionalDependencies:
-      encoding: 0.1.13
-
   node-fetch@2.7.0(encoding@0.1.13):
     dependencies:
       whatwg-url: 5.0.0
@@ -48775,7 +48521,7 @@ snapshots:
       ajv-errors: 1.0.1(ajv@6.12.6)
       chalk: 4.1.2
       cosmiconfig: 7.1.0
-      debug: 4.3.6
+      debug: 4.4.0
       globby: 11.1.0
       ignore: 5.3.0
       is-plain-obj: 3.0.0
@@ -48795,7 +48541,7 @@ snapshots:
       ajv-errors: 1.0.1(ajv@6.12.6)
       chalk: 4.1.2
       cosmiconfig: 8.3.6(typescript@5.7.2)
-      debug: 4.3.7
+      debug: 4.4.0
       globby: 11.1.0
       ignore: 5.3.0
       is-plain-obj: 3.0.0
@@ -49015,7 +48761,7 @@ snapshots:
       '@oclif/plugin-warn-if-update-available': 2.1.1(@swc/core@1.3.100)(@types/node@20.17.8)(typescript@5.7.2)
       aws-sdk: 2.1515.0
       concurrently: 7.6.0
-      debug: 4.3.4(supports-color@9.4.0)
+      debug: 4.3.4(supports-color@5.5.0)
       find-yarn-workspace-root: 2.0.0
       fs-extra: 8.1.0
       github-slugger: 1.5.0
@@ -49432,7 +49178,7 @@ snapshots:
   password-prompt@1.1.3:
     dependencies:
       ansi-escapes: 4.3.2
-      cross-spawn: 7.0.3
+      cross-spawn: 7.0.6

   path-browserify@0.0.1: {}

@@ -49816,11 +49562,11 @@ snapshots:
     dependencies:
       postcss: 7.0.39

-  postcss-html@0.36.0(postcss-syntax@0.36.2)(postcss@7.0.39):
+  postcss-html@0.36.0(postcss-syntax@0.36.2(postcss@8.4.32))(postcss@7.0.39):
     dependencies:
       htmlparser2: 3.10.1
       postcss: 7.0.39
-      postcss-syntax: 0.36.2(postcss@8.4.32)
+      postcss-syntax: 0.36.2(postcss-html@0.36.0(postcss-syntax@0.36.2(postcss@8.4.32))(postcss@7.0.39))(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39)

   postcss-less@3.1.4:
     dependencies:
@@ -49836,6 +49582,16 @@ snapshots:
       semver: 7.6.3
       webpack: 4.47.0(webpack-cli@5.1.4)

+  postcss-loader@4.3.0(postcss@8.4.49)(webpack@5.97.1(@swc/core@1.3.100)):
+    dependencies:
+      cosmiconfig: 7.1.0
+      klona: 2.0.6
+      loader-utils: 2.0.4
+      postcss: 8.4.49
+      schema-utils: 3.3.0
+      semver: 7.6.3
+      webpack: 5.97.1(@swc/core@1.3.100)
+
   postcss-loader@4.3.0(postcss@8.4.49)(webpack@5.97.1):
     dependencies:
       cosmiconfig: 7.1.0
@@ -49860,7 +49616,7 @@ snapshots:
       klona: 2.0.6
       postcss: 8.4.32
       semver: 7.6.3
-      webpack: 5.97.1(@swc/core@1.3.100)(webpack-cli@5.1.4)
+      webpack: 5.97.1(@swc/core@1.3.100)

   postcss-loader@6.2.1(postcss@8.4.49)(webpack@5.97.1):
     dependencies:
@@ -50464,17 +50220,15 @@ snapshots:
       postcss: 8.4.49
       postcss-value-parser: 4.2.0

-  postcss-resolve-nested-selector@0.1.1: {}
-
   postcss-resolve-nested-selector@0.1.6: {}

   postcss-safe-parser@4.0.2:
     dependencies:
       postcss: 7.0.39

-  postcss-safe-parser@6.0.0(postcss@8.4.32):
+  postcss-safe-parser@6.0.0(postcss@8.4.49):
     dependencies:
-      postcss: 8.4.32
+      postcss: 8.4.49

   postcss-safe-parser@7.0.1(postcss@8.4.49):
     dependencies:
@@ -50503,11 +50257,6 @@ snapshots:
       indexes-of: 1.0.1
       uniq: 1.0.1

-  postcss-selector-parser@6.0.13:
-    dependencies:
-      cssesc: 3.0.0
-      util-deprecate: 1.0.2
-
   postcss-selector-parser@6.1.2:
     dependencies:
       cssesc: 3.0.0
@@ -50553,9 +50302,13 @@ snapshots:
       postcss-value-parser: 4.2.0
       svgo: 3.3.2

-  postcss-syntax@0.36.2(postcss@8.4.32):
+  postcss-syntax@0.36.2(postcss-html@0.36.0(postcss-syntax@0.36.2(postcss@8.4.32))(postcss@7.0.39))(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39):
     dependencies:
-      postcss: 8.4.32
+      postcss: 7.0.39
+    optionalDependencies:
+      postcss-html: 0.36.0(postcss-syntax@0.36.2(postcss@8.4.32))(postcss@7.0.39)
+      postcss-less: 3.1.4
+      postcss-scss: 2.1.1

   postcss-unique-selectors@4.0.1:
     dependencies:
@@ -50897,26 +50650,6 @@ snapshots:
       - supports-color
       - utf-8-validate

-  puppeteer-core@13.7.0(encoding@0.1.13):
-    dependencies:
-      cross-fetch: 3.1.5(encoding@0.1.13)
-      debug: 4.3.4(supports-color@9.4.0)
-      devtools-protocol: 0.0.981744
-      extract-zip: 2.0.1
-      https-proxy-agent: 5.0.1
-      pkg-dir: 4.2.0
-      progress: 2.0.3
-      proxy-from-env: 1.1.0
-      rimraf: 3.0.2
-      tar-fs: 2.1.1
-      unbzip2-stream: 1.4.3
-      ws: 8.5.0
-    transitivePeerDependencies:
-      - bufferutil
-      - encoding
-      - supports-color
-      - utf-8-validate
-
   puppeteer-core@2.1.1:
     dependencies:
       '@types/mime-types': 2.1.4
@@ -51152,7 +50885,7 @@ snapshots:

   react-docgen-typescript-plugin@1.0.5(typescript@5.7.2)(webpack@5.97.1):
     dependencies:
-      debug: 4.3.4(supports-color@9.4.0)
+      debug: 4.3.4(supports-color@5.5.0)
       endent: 2.1.0
       find-cache-dir: 3.3.2
       flat-cache: 3.2.0
@@ -52249,6 +51982,17 @@ snapshots:
       - supports-color

   sass-loader@10.5.0(sass@1.69.5)(webpack@5.97.1(@swc/core@1.3.100)):
+    dependencies:
+      klona: 2.0.6
+      loader-utils: 2.0.4
+      neo-async: 2.6.2
+      schema-utils: 3.3.0
+      semver: 7.6.3
+      webpack: 5.97.1(@swc/core@1.3.100)
+    optionalDependencies:
+      sass: 1.69.5
+
+  sass-loader@10.5.0(sass@1.69.5)(webpack@5.97.1):
     dependencies:
       klona: 2.0.6
       loader-utils: 2.0.4
@@ -52271,7 +52015,7 @@ snapshots:
     dependencies:
       klona: 2.0.6
       neo-async: 2.6.2
-      webpack: 5.97.1(@swc/core@1.3.100)(webpack-cli@5.1.4)
+      webpack: 5.97.1(@swc/core@1.3.100)
     optionalDependencies:
       sass: 1.69.5

@@ -52600,7 +52344,7 @@ snapshots:
     dependencies:
       '@kwsites/file-exists': 1.1.1
       '@kwsites/promise-deferred': 1.1.1
-      debug: 4.3.4(supports-color@9.4.0)
+      debug: 4.3.4(supports-color@5.5.0)
     transitivePeerDependencies:
       - supports-color

@@ -52768,7 +52512,7 @@ snapshots:
       abab: 2.0.6
       iconv-lite: 0.6.3
       source-map-js: 1.0.2
-      webpack: 5.97.1(@swc/core@1.3.100)(webpack-cli@5.1.4)
+      webpack: 5.97.1(@swc/core@1.3.100)(esbuild@0.18.20)(webpack-cli@5.1.4)

   source-map-resolve@0.5.3:
     dependencies:
@@ -53317,15 +53061,15 @@ snapshots:

   stylelint@13.13.1:
     dependencies:
-      '@stylelint/postcss-css-in-js': 0.37.3(postcss-syntax@0.36.2)(postcss@7.0.39)
-      '@stylelint/postcss-markdown': 0.36.2(postcss-syntax@0.36.2)(postcss@7.0.39)
+      '@stylelint/postcss-css-in-js': 0.37.3(postcss-syntax@0.36.2(postcss-html@0.36.0(postcss-syntax@0.36.2(postcss@8.4.32))(postcss@7.0.39))(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39))(postcss@7.0.39)
+      '@stylelint/postcss-markdown': 0.36.2(postcss-syntax@0.36.2(postcss-html@0.36.0(postcss-syntax@0.36.2(postcss@8.4.32))(postcss@7.0.39))(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39))(postcss@7.0.39)
       autoprefixer: 9.8.6
       balanced-match: 2.0.0
       chalk: 4.1.2
       cosmiconfig: 7.1.0
-      debug: 4.3.6
+      debug: 4.4.0
       execall: 2.0.0
-      fast-glob: 3.3.2
+      fast-glob: 3.3.3
       fastest-levenshtein: 1.0.16
       file-entry-cache: 6.0.1
       get-stdin: 8.0.0
@@ -53344,7 +53088,7 @@ snapshots:
       micromatch: 4.0.8
       normalize-selector: 0.2.0
       postcss: 7.0.39
-      postcss-html: 0.36.0(postcss-syntax@0.36.2)(postcss@7.0.39)
+      postcss-html: 0.36.0(postcss-syntax@0.36.2(postcss@8.4.32))(postcss@7.0.39)
       postcss-less: 3.1.4
       postcss-media-query-parser: 0.2.3
       postcss-resolve-nested-selector: 0.1.6
@@ -53352,7 +53096,7 @@ snapshots:
       postcss-sass: 0.4.4
       postcss-scss: 2.1.1
       postcss-selector-parser: 6.1.2
-      postcss-syntax: 0.36.2(postcss@8.4.32)
+      postcss-syntax: 0.36.2(postcss-html@0.36.0(postcss-syntax@0.36.2(postcss@8.4.32))(postcss@7.0.39))(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39)
       postcss-value-parser: 4.2.0
       resolve-from: 5.0.0
       slash: 3.0.0
@@ -53362,7 +53106,7 @@ snapshots:
       style-search: 0.1.0
       sugarss: 2.0.0
       svg-tags: 1.0.0
-      table: 6.8.1
+      table: 6.9.0
       v8-compile-cache: 2.4.0
       write-file-atomic: 3.0.3
     transitivePeerDependencies:
@@ -53372,13 +53116,13 @@ snapshots:

   stylelint@14.16.1:
     dependencies:
-      '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.13)
+      '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.1.2)
       balanced-match: 2.0.0
       colord: 2.9.3
       cosmiconfig: 7.1.0
-      css-functions-list: 3.2.1
-      debug: 4.3.4(supports-color@9.4.0)
-      fast-glob: 3.3.2
+      css-functions-list: 3.2.3
+      debug: 4.4.0
+      fast-glob: 3.3.3
       fastest-levenshtein: 1.0.16
       file-entry-cache: 6.0.1
       global-modules: 2.0.0
@@ -53392,14 +53136,14 @@ snapshots:
       known-css-properties: 0.26.0
       mathml-tag-names: 2.1.3
       meow: 9.0.0
-      micromatch: 4.0.5
+      micromatch: 4.0.8
       normalize-path: 3.0.0
-      picocolors: 1.0.0
-      postcss: 8.4.32
+      picocolors: 1.1.1
+      postcss: 8.4.49
       postcss-media-query-parser: 0.2.3
-      postcss-resolve-nested-selector: 0.1.1
-      postcss-safe-parser: 6.0.0(postcss@8.4.32)
-      postcss-selector-parser: 6.0.13
+      postcss-resolve-nested-selector: 0.1.6
+      postcss-safe-parser: 6.0.0(postcss@8.4.49)
+      postcss-selector-parser: 6.1.2
       postcss-value-parser: 4.2.0
       resolve-from: 5.0.0
       string-width: 4.2.3
@@ -53407,7 +53151,7 @@ snapshots:
       style-search: 0.1.0
       supports-hyperlinks: 2.3.0
       svg-tags: 1.0.0
-      table: 6.8.1
+      table: 6.9.0
       v8-compile-cache: 2.4.0
       write-file-atomic: 4.0.2
     transitivePeerDependencies:
@@ -53626,14 +53370,6 @@ snapshots:
       slice-ansi: 2.1.0
       string-width: 3.1.0

-  table@6.8.1:
-    dependencies:
-      ajv: 8.17.1
-      lodash.truncate: 4.4.2
-      slice-ansi: 4.0.0
-      string-width: 4.2.3
-      strip-ansi: 6.0.1
-
   table@6.9.0:
     dependencies:
       ajv: 8.17.1
@@ -53805,6 +53541,17 @@ snapshots:
       '@swc/core': 1.3.100
       uglify-js: 3.17.4

+  terser-webpack-plugin@5.3.11(@swc/core@1.3.100)(webpack@5.97.1(@swc/core@1.3.100)):
+    dependencies:
+      '@jridgewell/trace-mapping': 0.3.25
+      jest-worker: 27.5.1
+      schema-utils: 4.3.0
+      serialize-javascript: 6.0.2
+      terser: 5.36.0
+      webpack: 5.97.1(@swc/core@1.3.100)
+    optionalDependencies:
+      '@swc/core': 1.3.100
+
   terser-webpack-plugin@5.3.11(@swc/core@1.3.100)(webpack@5.97.1):
     dependencies:
       '@jridgewell/trace-mapping': 0.3.25
@@ -53867,7 +53614,7 @@ snapshots:

   third-party-web@0.26.5: {}

-  third-party-web@0.26.7: {}
+  third-party-web@0.27.0: {}

   throat@5.0.0: {}

@@ -54105,6 +53852,23 @@ snapshots:
       '@jest/types': 29.6.3
       babel-jest: 29.7.0(@babel/core@7.26.0)

+  ts-jest@29.1.1(@babel/core@7.26.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@22.9.1)(typescript@5.7.2)))(typescript@5.7.2):
+    dependencies:
+      bs-logger: 0.2.6
+      fast-json-stable-stringify: 2.1.0
+      jest: 27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.100)(@types/node@22.9.1)(typescript@5.7.2))
+      jest-util: 29.7.0
+      json5: 2.2.3
+      lodash.memoize: 4.1.2
+      make-error: 1.3.6
+      semver: 7.6.3
+      typescript: 5.7.2
+      yargs-parser: 21.1.1
+    optionalDependencies:
+      '@babel/core': 7.26.0
+      '@jest/types': 29.6.3
+      babel-jest: 29.7.0(@babel/core@7.26.0)
+
   ts-loader@9.5.1(typescript@5.7.2)(webpack@5.89.0):
     dependencies:
       chalk: 4.1.2
@@ -54115,6 +53879,16 @@ snapshots:
       typescript: 5.7.2
       webpack: 5.89.0(@swc/core@1.3.100)(uglify-js@3.17.4)(webpack-cli@4.10.0)

+  ts-loader@9.5.1(typescript@5.7.2)(webpack@5.97.1(@swc/core@1.3.100)):
+    dependencies:
+      chalk: 4.1.2
+      enhanced-resolve: 5.16.0
+      micromatch: 4.0.7
+      semver: 7.6.3
+      source-map: 0.7.4
+      typescript: 5.7.2
+      webpack: 5.97.1(@swc/core@1.3.100)
+
   ts-loader@9.5.1(typescript@5.7.2)(webpack@5.97.1):
     dependencies:
       chalk: 4.1.2
@@ -54544,30 +54318,30 @@ snapshots:

   urix@0.1.0: {}

-  url-loader@4.1.1(file-loader@6.2.0(webpack@4.47.0(webpack-cli@5.1.4)))(webpack@4.47.0(webpack-cli@5.1.4)):
+  url-loader@4.1.1(file-loader@6.2.0(webpack@5.89.0))(webpack@5.89.0):
     dependencies:
       loader-utils: 2.0.4
       mime-types: 2.1.35
       schema-utils: 3.3.0
-      webpack: 4.47.0(webpack-cli@5.1.4)
+      webpack: 5.89.0(@swc/core@1.3.100)(uglify-js@3.17.4)(webpack-cli@4.10.0)
     optionalDependencies:
-      file-loader: 6.2.0(webpack@4.47.0(webpack-cli@5.1.4))
+      file-loader: 6.2.0(webpack@5.89.0)

-  url-loader@4.1.1(file-loader@6.2.0(webpack@5.89.0))(webpack@5.89.0):
+  url-loader@4.1.1(file-loader@6.2.0(webpack@5.97.1))(webpack@4.47.0(webpack-cli@5.1.4)):
     dependencies:
       loader-utils: 2.0.4
       mime-types: 2.1.35
       schema-utils: 3.3.0
-      webpack: 5.89.0(@swc/core@1.3.100)(uglify-js@3.17.4)(webpack-cli@4.10.0)
+      webpack: 4.47.0(webpack-cli@5.1.4)
     optionalDependencies:
-      file-loader: 6.2.0(webpack@5.89.0)
+      file-loader: 6.2.0(webpack@4.47.0(webpack-cli@5.1.4))

   url-loader@4.1.1(file-loader@6.2.0(webpack@5.97.1))(webpack@5.97.1):
     dependencies:
       loader-utils: 2.0.4
       mime-types: 2.1.35
       schema-utils: 3.3.0
-      webpack: 5.97.1(@swc/core@1.3.100)(webpack-cli@5.1.4)
+      webpack: 5.97.1(@swc/core@1.3.100)(esbuild@0.18.20)(webpack-cli@5.1.4)
     optionalDependencies:
       file-loader: 6.2.0(webpack@5.97.1)

@@ -54969,7 +54743,7 @@ snapshots:
       '@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.7.0)(webpack@5.89.0))
       colorette: 2.0.20
       commander: 7.2.0
-      cross-spawn: 7.0.3
+      cross-spawn: 7.0.6
       fastest-levenshtein: 1.0.16
       import-local: 3.1.0
       interpret: 2.2.0
@@ -54993,11 +54767,11 @@ snapshots:
       import-local: 3.1.0
       interpret: 3.1.1
       rechoir: 0.8.0
-      webpack: 5.97.1(@swc/core@1.3.100)(webpack-cli@5.1.4)
+      webpack: 5.97.1(@swc/core@1.3.100)
       webpack-merge: 5.10.0
     optionalDependencies:
       webpack-bundle-analyzer: 4.10.2
-      webpack-dev-server: 4.15.1(webpack-cli@5.1.4)(webpack@5.97.1)
+      webpack-dev-server: 4.15.1(webpack@5.97.1)

   webpack-cli@5.1.4(webpack-bundle-analyzer@4.9.1)(webpack-dev-server@4.15.1)(webpack@5.97.1):
     dependencies:
@@ -55013,11 +54787,30 @@ snapshots:
       import-local: 3.1.0
       interpret: 3.1.1
       rechoir: 0.8.0
-      webpack: 5.97.1(@swc/core@1.3.100)(webpack-cli@5.1.4)
+      webpack: 5.97.1(@swc/core@1.3.100)(esbuild@0.18.20)(webpack-cli@5.1.4)
       webpack-merge: 5.10.0
     optionalDependencies:
       webpack-bundle-analyzer: 4.9.1
-      webpack-dev-server: 4.15.1(debug@4.3.4)(webpack-cli@5.1.4)(webpack@5.97.1)
+      webpack-dev-server: 4.15.1(webpack-cli@5.1.4)(webpack@5.97.1)
+
+  webpack-cli@5.1.4(webpack-dev-server@4.15.1)(webpack@5.97.1):
+    dependencies:
+      '@discoveryjs/json-ext': 0.5.7
+      '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.97.1)
+      '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.97.1)
+      '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack-dev-server@4.15.1)(webpack@5.97.1)
+      colorette: 2.0.20
+      commander: 10.0.1
+      cross-spawn: 7.0.6
+      envinfo: 7.14.0
+      fastest-levenshtein: 1.0.16
+      import-local: 3.1.0
+      interpret: 3.1.1
+      rechoir: 0.8.0
+      webpack: 5.97.1(@swc/core@1.3.100)(webpack-cli@5.1.4)
+      webpack-merge: 5.10.0
+    optionalDependencies:
+      webpack-dev-server: 4.15.1(webpack-cli@5.1.4)(webpack@5.97.1)

   webpack-cli@5.1.4(webpack@5.97.1):
     dependencies:
@@ -55159,7 +54952,7 @@ snapshots:
       ws: 8.18.0
     optionalDependencies:
       webpack: 5.97.1(@swc/core@1.3.100)(webpack-cli@5.1.4)
-      webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.97.1)
+      webpack-cli: 5.1.4(webpack-dev-server@4.15.1)(webpack@5.97.1)
     transitivePeerDependencies:
       - bufferutil
       - debug
@@ -55207,6 +55000,46 @@ snapshots:
       - utf-8-validate
     optional: true

+  webpack-dev-server@4.15.1(webpack@5.97.1):
+    dependencies:
+      '@types/bonjour': 3.5.13
+      '@types/connect-history-api-fallback': 1.5.4
+      '@types/express': 4.17.21
+      '@types/serve-index': 1.9.4
+      '@types/serve-static': 1.15.5
+      '@types/sockjs': 0.3.36
+      '@types/ws': 8.5.10
+      ansi-html-community: 0.0.8
+      bonjour-service: 1.1.1
+      chokidar: 3.6.0
+      colorette: 2.0.20
+      compression: 1.7.5
+      connect-history-api-fallback: 2.0.0
+      default-gateway: 6.0.3
+      express: 4.18.2
+      graceful-fs: 4.2.11
+      html-entities: 2.4.0
+      http-proxy-middleware: 2.0.6(@types/express@4.17.21)(debug@4.3.4)
+      ipaddr.js: 2.1.0
+      launch-editor: 2.6.1
+      open: 8.4.2
+      p-retry: 4.6.2
+      rimraf: 3.0.2
+      schema-utils: 4.3.0
+      selfsigned: 2.4.1
+      serve-index: 1.9.1
+      sockjs: 0.3.24
+      spdy: 4.0.2
+      webpack-dev-middleware: 5.3.3(webpack@5.97.1)
+      ws: 8.18.0
+    optionalDependencies:
+      webpack: 5.97.1(@swc/core@1.3.100)
+    transitivePeerDependencies:
+      - bufferutil
+      - debug
+      - supports-color
+      - utf-8-validate
+
   webpack-filter-warnings-plugin@1.2.1(webpack@4.47.0(webpack-cli@5.1.4)):
     dependencies:
       webpack: 4.47.0(webpack-cli@5.1.4)
@@ -55240,6 +55073,11 @@ snapshots:
       flat: 5.0.2
       wildcard: 2.0.1

+  webpack-remove-empty-scripts@1.0.4(webpack@5.97.1(@swc/core@1.3.100)):
+    dependencies:
+      ansis: 1.5.2
+      webpack: 5.97.1(@swc/core@1.3.100)
+
   webpack-remove-empty-scripts@1.0.4(webpack@5.97.1):
     dependencies:
       ansis: 1.5.2
@@ -55301,7 +55139,7 @@ snapshots:
       watchpack: 1.7.5
       webpack-sources: 1.4.3
     optionalDependencies:
-      webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.97.1)
+      webpack-cli: 5.1.4(webpack-dev-server@4.15.1)(webpack@5.97.1)
     transitivePeerDependencies:
       - supports-color

@@ -55338,6 +55176,36 @@ snapshots:
       - esbuild
       - uglify-js

+  webpack@5.97.1(@swc/core@1.3.100):
+    dependencies:
+      '@types/eslint-scope': 3.7.7
+      '@types/estree': 1.0.6
+      '@webassemblyjs/ast': 1.14.1
+      '@webassemblyjs/wasm-edit': 1.14.1
+      '@webassemblyjs/wasm-parser': 1.14.1
+      acorn: 8.14.0
+      browserslist: 4.24.4
+      chrome-trace-event: 1.0.3
+      enhanced-resolve: 5.17.1
+      es-module-lexer: 1.4.1
+      eslint-scope: 5.1.1
+      events: 3.3.0
+      glob-to-regexp: 0.4.1
+      graceful-fs: 4.2.11
+      json-parse-even-better-errors: 2.3.1
+      loader-runner: 4.3.0
+      mime-types: 2.1.35
+      neo-async: 2.6.2
+      schema-utils: 3.3.0
+      tapable: 2.2.1
+      terser-webpack-plugin: 5.3.11(@swc/core@1.3.100)(webpack@5.97.1(@swc/core@1.3.100))
+      watchpack: 2.4.1
+      webpack-sources: 3.2.3
+    transitivePeerDependencies:
+      - '@swc/core'
+      - esbuild
+      - uglify-js
+
   webpack@5.97.1(@swc/core@1.3.100)(esbuild@0.18.20):
     dependencies:
       '@types/eslint-scope': 3.7.7
@@ -55426,7 +55294,7 @@ snapshots:
       watchpack: 2.4.1
       webpack-sources: 3.2.3
     optionalDependencies:
-      webpack-cli: 5.1.4(webpack-bundle-analyzer@4.9.1)(webpack-dev-server@4.15.1)(webpack@5.97.1)
+      webpack-cli: 5.1.4(webpack@5.97.1)
     transitivePeerDependencies:
       - '@swc/core'
       - esbuild
@@ -55592,10 +55460,6 @@ snapshots:
     dependencies:
       typescript: 5.7.2

-  wp-types@3.66.1:
-    dependencies:
-      typescript: 5.7.2
-
   wrap-ansi@2.1.0:
     dependencies:
       string-width: 1.0.2
@@ -55695,8 +55559,6 @@ snapshots:

   ws@8.18.0: {}

-  ws@8.5.0: {}
-
   x-default-browser@0.4.0:
     optionalDependencies:
       default-browser-id: 1.0.4