diff --git a/backport-changelog/7.2/14092.md b/backport-changelog/7.2/14092.md new file mode 100644 index 00000000000000..2d48689efe1a11 --- /dev/null +++ b/backport-changelog/7.2/14092.md @@ -0,0 +1,4 @@ +https://github.com/WordPress/wordpress-develop/pull/14092 + +* https://github.com/WordPress/gutenberg/pull/84294 +* https://github.com/WordPress/gutenberg/pull/84302 diff --git a/backport-changelog/7.2/14190.md b/backport-changelog/7.2/14190.md new file mode 100644 index 00000000000000..596d5a726d9e57 --- /dev/null +++ b/backport-changelog/7.2/14190.md @@ -0,0 +1,3 @@ +https://github.com/WordPress/wordpress-develop/pull/14190 + +* https://github.com/WordPress/gutenberg/pull/84523 diff --git a/lib/class-wp-theme-json-gutenberg.php b/lib/class-wp-theme-json-gutenberg.php index cfd3ee3455dc71..4921b3acedff46 100644 --- a/lib/class-wp-theme-json-gutenberg.php +++ b/lib/class-wp-theme-json-gutenberg.php @@ -1110,7 +1110,7 @@ public function __construct( $theme_json = array( 'version' => WP_Theme_JSON_Gut // In addition to presets, spacingScale (which generates presets) is also keyed by origin. $scale_path = array( 'settings', 'spacing', 'spacingScale' ); $spacing_scale = _wp_array_get( $this->theme_json, $scale_path, null ); - if ( null !== $spacing_scale ) { + if ( is_array( $spacing_scale ) ) { // If the spacingScale is not already keyed by origin. if ( empty( array_intersect( array_keys( $spacing_scale ), static::VALID_ORIGINS ) ) ) { _wp_array_set( $this->theme_json, $scale_path, array( $origin => $spacing_scale ) ); @@ -1185,7 +1185,10 @@ private static function unwrap_shared_block_style_variations( $theme_json, $vali foreach ( $registered_variations as $variation_name ) { $block_level_data = $new_theme_json['styles']['blocks'][ $block_type ]['variations'][ $variation_name ] ?? array(); $top_level_data = $variations[ $variation_name ] ?? array(); - $merged_data = array_replace_recursive( $top_level_data, $block_level_data ); + if ( ! is_array( $block_level_data ) || ! is_array( $top_level_data ) ) { + continue; + } + $merged_data = array_replace_recursive( $top_level_data, $block_level_data ); if ( ! empty( $merged_data ) ) { _wp_array_set( $new_theme_json, array( 'styles', 'blocks', $block_type, 'variations', $variation_name ), $merged_data ); } @@ -1460,7 +1463,7 @@ protected static function sanitize( $input, $valid_block_names, $valid_element_n if ( ! empty( $input['blockTypes'] ) && is_array( $input['blockTypes'] ) ) { $variation_pseudo_selectors = array(); foreach ( $input['blockTypes'] as $variation_block_type ) { - if ( isset( static::VALID_BLOCK_PSEUDO_SELECTORS[ $variation_block_type ] ) ) { + if ( is_string( $variation_block_type ) && isset( static::VALID_BLOCK_PSEUDO_SELECTORS[ $variation_block_type ] ) ) { $variation_pseudo_selectors = array_merge( $variation_pseudo_selectors, static::VALID_BLOCK_PSEUDO_SELECTORS[ $variation_block_type ] @@ -2062,7 +2065,10 @@ public function get_stylesheet( $types = array( 'variables', 'styles', 'presets' // Load the custom CSS last so it has the highest specificity. if ( in_array( 'custom-css', $types, true ) ) { // Add the global styles root CSS. - $stylesheet .= _wp_array_get( $this->theme_json, array( 'styles', 'css' ) ); + $root_css = $this->theme_json['styles']['css'] ?? ''; + if ( is_string( $root_css ) ) { + $stylesheet .= $root_css; + } } return $stylesheet; @@ -2080,7 +2086,7 @@ public function get_stylesheet( $types = array( 'variables', 'styles', 'presets' public static function process_blocks_custom_css( $css, $selector ) { $processed_css = ''; - if ( empty( $css ) ) { + if ( empty( $css ) || ! is_string( $css ) ) { return $processed_css; } @@ -3260,7 +3266,7 @@ protected static function get_property_value( $styles, $path, $theme_json = null * to a path, this converts that path into the value at that path. * For example: { "ref": "style.color.background" } => "#fff". */ - if ( is_array( $value ) && isset( $value['ref'] ) ) { + if ( is_array( $value ) && isset( $value['ref'] ) && is_string( $value['ref'] ) ) { $value_path = explode( '.', $value['ref'] ); $ref_value = _wp_array_get( $theme_json, $value_path, null ); // Background Image refs can refer to a string or an array containing a URL string. @@ -5571,6 +5577,7 @@ private static function compute_spacing_sizes( $spacing_scale ) { ! isset( $spacing_scale['mediumStep'] ) || ! is_numeric( $spacing_scale['mediumStep'] ) || ! isset( $spacing_scale['unit'] ) || + ! is_string( $spacing_scale['unit'] ) || ! isset( $spacing_scale['operator'] ) || ( '+' !== $spacing_scale['operator'] && '*' !== $spacing_scale['operator'] ) || ! isset( $spacing_scale['increment'] ) || diff --git a/lib/experimental/experiments/load.php b/lib/experimental/experiments/load.php index 07cff7f653bacc..2dc5742d963127 100644 --- a/lib/experimental/experiments/load.php +++ b/lib/experimental/experiments/load.php @@ -147,8 +147,15 @@ function gutenberg_initialize_experiments_settings() { 'label' => __( 'Gutenberg Experiments', 'gutenberg' ), 'show_in_rest' => array( 'schema' => array( - 'type' => 'object', - 'properties' => $properties, + 'type' => 'object', + 'properties' => $properties, + /* + * A site that enabled an experiment which was since removed still + * carries that ID in the saved option. + */ + 'additionalProperties' => array( + 'type' => 'boolean', + ), ), ), 'default' => array(), diff --git a/lib/experimental/experiments/react-19.php b/lib/experimental/experiments/react-19.php index 773396478c7f43..e2e6c7254e709c 100644 --- a/lib/experimental/experiments/react-19.php +++ b/lib/experimental/experiments/react-19.php @@ -43,15 +43,20 @@ function gutenberg_get_react_19_incompatible_plugins() { 'adminify/adminify.php' => null, 'advanced-coupons-for-woocommerce-free/advanced-coupons-for-woocommerce-free.php' => null, 'advanced-coupons-for-woocommerce/advanced-coupons-for-woocommerce.php' => null, + 'astra-pro-sites/astra-pro-sites.php' => null, 'astra-sites/astra-sites.php' => null, 'beehive-analytics/beehive-analytics.php' => null, 'brave-popup-builder/index.php' => null, 'bravepopup-pro/index.php' => null, 'classified-listing/classified-listing.php' => null, + 'echo-rewards/echo-rewards.php' => null, + 'forminator/forminator.php' => null, + 'iron-security/iron-security.php' => null, 'llms-full-txt-generator/llms-txt-generator.php' => null, 'mail-mint/mail-mint.php' => null, 'meetinghub/meetinghub.php' => null, 'sb-analytics/sb-analytics-pro.php' => null, + 'stackable-ultimate-gutenberg-blocks/plugin.php' => null, 'ultimate-blocks/ultimate-blocks.php' => '3.6.0', 'wp-letsencrypt-ssl-pro/wp-letsencrypt.php' => null, 'wp-post-author/aft-wp-post-author.php' => null, diff --git a/packages/block-editor/src/components/alignment-control/test/__snapshots__/index.jsdom.test.jsx.snap b/packages/block-editor/src/components/alignment-control/test/__snapshots__/index.jsdom.test.jsx.snap index 2955c3ccb911ba..15b3c63ad6f55e 100644 --- a/packages/block-editor/src/components/alignment-control/test/__snapshots__/index.jsdom.test.jsx.snap +++ b/packages/block-editor/src/components/alignment-control/test/__snapshots__/index.jsdom.test.jsx.snap @@ -29,7 +29,6 @@ exports[`AlignmentUI > should allow custom alignment controls to be specified 1` > @@ -56,7 +55,6 @@ exports[`AlignmentUI > should allow custom alignment controls to be specified 1` > @@ -92,7 +90,6 @@ exports[`AlignmentUI > should match snapshot when controls are hidden 1`] = ` > @@ -129,7 +126,6 @@ exports[`AlignmentUI > should match snapshot when controls are visible 1`] = ` > @@ -156,7 +152,6 @@ exports[`AlignmentUI > should match snapshot when controls are visible 1`] = ` > @@ -183,7 +178,6 @@ exports[`AlignmentUI > should match snapshot when controls are visible 1`] = ` > diff --git a/packages/block-editor/src/components/block-alignment-control/test/__snapshots__/index.jsdom.test.jsx.snap b/packages/block-editor/src/components/block-alignment-control/test/__snapshots__/index.jsdom.test.jsx.snap index 9feb8db6409371..a7b520adc948b9 100644 --- a/packages/block-editor/src/components/block-alignment-control/test/__snapshots__/index.jsdom.test.jsx.snap +++ b/packages/block-editor/src/components/block-alignment-control/test/__snapshots__/index.jsdom.test.jsx.snap @@ -27,7 +27,6 @@ exports[`BlockAlignmentUI > should match snapshot when controls are hidden 1`] = > should match snapshot when controls are visible 1`] > should match snapshot when controls are visible 1`] > should match snapshot when controls are visible 1`] > should match snapshot when controls are visible 1`] > should match snapshot when controls are hidd /> @@ -79,7 +78,6 @@ exports[`BlockVerticalAlignmentUI > should match snapshot when controls are visi /> @@ -105,7 +103,6 @@ exports[`BlockVerticalAlignmentUI > should match snapshot when controls are visi > should match snapshot when controls are visi > enhanceNavigationLinkVariations > enhances variations with icon > , "isActive": [Function], @@ -46,7 +45,6 @@ exports[`hooks > enhanceNavigationLinkVariations > enhances variations with icon > , "isActive": [Function], @@ -71,7 +69,6 @@ exports[`hooks > enhanceNavigationLinkVariations > enhances variations with icon > , "isActive": [Function], @@ -96,19 +93,15 @@ exports[`hooks > enhanceNavigationLinkVariations > enhances variations with icon > , "isActive": [Function], @@ -133,7 +126,6 @@ exports[`hooks > enhanceNavigationLinkVariations > enhances variations with icon > + + diff --git a/packages/components/src/menu-item/test/__snapshots__/index.jsdom.test.tsx.snap b/packages/components/src/menu-item/test/__snapshots__/index.jsdom.test.tsx.snap index b238b650bc8349..91b956dd1ea39b 100644 --- a/packages/components/src/menu-item/test/__snapshots__/index.jsdom.test.tsx.snap +++ b/packages/components/src/menu-item/test/__snapshots__/index.jsdom.test.tsx.snap @@ -31,7 +31,6 @@ exports[`MenuItem > should match snapshot when all props provided 1`] = ` > @@ -94,7 +93,6 @@ exports[`MenuItem > should match snapshot when isSelected and role are optionall > diff --git a/packages/components/src/notice/test/__snapshots__/index.jsdom.test.tsx.snap b/packages/components/src/notice/test/__snapshots__/index.jsdom.test.tsx.snap index 09cd177da281dc..99161acaf996dd 100644 --- a/packages/components/src/notice/test/__snapshots__/index.jsdom.test.tsx.snap +++ b/packages/components/src/notice/test/__snapshots__/index.jsdom.test.tsx.snap @@ -59,7 +59,6 @@ exports[`Notice > should match snapshot 1`] = ` > diff --git a/packages/e2e-tests/plugins/react-18-compat-block/editor.js b/packages/e2e-tests/plugins/react-18-compat-block/editor.js index f7c96df1a025f5..bd58ff434c0810 100644 --- a/packages/e2e-tests/plugins/react-18-compat-block/editor.js +++ b/packages/e2e-tests/plugins/react-18-compat-block/editor.js @@ -1,6 +1,7 @@ ( function () { const { registerBlockType } = wp.blocks; const { useBlockProps } = wp.blockEditor; + const { createElement, memo } = wp.element; // The externalized React JSX runtime (the `react-jsx-runtime` script // handle). When the React 19 experiment is enabled this is React 19's @@ -89,6 +90,23 @@ label: 'Hello from defaultProps', }; + // The same, wrapped in `memo()`. React 18 resolved the inner component's + // `defaultProps` in `updateMemoComponent`, not at element creation, so no + // runtime ever wrote them into the element. All three ways of creating the + // element are exercised — the classic `createElement`, the externalized JSX + // runtime, and the bundled React 18 one — because the fix has to live in + // the reconciler to cover the last of them. + function MemoGreetingBase( props ) { + return jsx( 'span', { + className: props.className, + children: props.label, + } ); + } + MemoGreetingBase.defaultProps = { + label: 'Hello from memo defaultProps', + }; + const MemoGreeting = memo( MemoGreetingBase ); + registerBlockType( 'test/react-18-compat-block', { apiVersion: 3, edit: function Edit() { @@ -122,6 +140,26 @@ // The `defaultProps` component, created with the // externalized React runtime. jsx( Greeting, {}, 'greeting' ), + createElement( MemoGreeting, { + key: 'memo-greeting', + className: 'react-18-compat-block__memo-greeting', + } ), + jsx( + MemoGreeting, + { + className: + 'react-18-compat-block__memo-greeting-jsx', + }, + 'memo-greeting-jsx' + ), + jsxDEV( + MemoGreeting, + { + className: + 'react-18-compat-block__memo-greeting-legacy', + }, + 'memo-greeting-legacy' + ), ], } ); }, diff --git a/packages/editor/src/components/plugin-post-publish-panel/test/__snapshots__/index.jsdom.test.jsx.snap b/packages/editor/src/components/plugin-post-publish-panel/test/__snapshots__/index.jsdom.test.jsx.snap index 878e8404f0ab95..e1c801f12511fd 100644 --- a/packages/editor/src/components/plugin-post-publish-panel/test/__snapshots__/index.jsdom.test.jsx.snap +++ b/packages/editor/src/components/plugin-post-publish-panel/test/__snapshots__/index.jsdom.test.jsx.snap @@ -30,7 +30,6 @@ exports[`PluginPostPublishPanel > renders fill properly 1`] = ` > diff --git a/packages/editor/src/components/post-saved-state/test/__snapshots__/index.jsdom.test.jsx.snap b/packages/editor/src/components/post-saved-state/test/__snapshots__/index.jsdom.test.jsx.snap index fb102e36b70762..648efc7606597f 100644 --- a/packages/editor/src/components/post-saved-state/test/__snapshots__/index.jsdom.test.jsx.snap +++ b/packages/editor/src/components/post-saved-state/test/__snapshots__/index.jsdom.test.jsx.snap @@ -20,7 +20,6 @@ exports[`PostSavedState > returns a disabled button if the post is not saveable > diff --git a/packages/icons/CHANGELOG.md b/packages/icons/CHANGELOG.md index 30f3667c1d82fa..5bf818527e2b97 100644 --- a/packages/icons/CHANGELOG.md +++ b/packages/icons/CHANGELOG.md @@ -6,6 +6,7 @@ ### Breaking Changes +- Stroke-based icons now scale their stroke width with their size. A 1.5-unit stroke renders at 1px for a 16px icon, 1.25px for a 20px icon, and 1.5px for a 24px icon ([#84081](https://github.com/WordPress/gutenberg/pull/84081)). - Upgrade React to v19 ([#83941](https://github.com/WordPress/gutenberg/pull/83941)). ### New Features diff --git a/packages/icons/README.md b/packages/icons/README.md index 9c574da14d31be..f9a8c88f90547e 100644 --- a/packages/icons/README.md +++ b/packages/icons/README.md @@ -20,6 +20,12 @@ import { Icon, check } from '@wordpress/icons'; ; ``` +### Stroke scaling + +Stroke-based icons scale their stroke width with their size. An icon with a 24×24 viewBox and a stroke width of 1.5 renders a 1px stroke at 16px, a 1.25px stroke at 20px, and a 1.5px stroke at 24px. + +You can adjust the stroke width with the standard SVG `strokeWidth` prop. Its value is in viewBox units and scales with the icon. For example, `` renders a 2px stroke. This does not affect fill-based icons. + ### Recoloring Use CSS `color`. Icons follow it through `currentColor` on `fill` or `stroke`. @@ -30,9 +36,9 @@ A growing subset of the library is stroke-based. Those icons set `fill: none` as ## Props -| Name | Type | Default | Description | -| ------- | --------- | ------- | --------------------------------------------------------------------------- | -| `size` | `integer` | `24` | Size of icon in pixels. | +| Name | Type | Default | Description | +| ------- | --------- | ------- | ----------------------------------------------------------------------------- | +| `size` | `integer` | `24` | Size of icon in pixels. | | `style` | `object` | | Merged with the icon's intrinsic styles. Consumer properties take precedence. | ## Docs & examples @@ -43,7 +49,7 @@ You can browse the icons docs and examples at [https://wordpress.github.io/guten To add a new icon to the library, follow these steps: -1. **Add the SVG file**: Place your SVG file in the `src/library/` directory. The filename should be in kebab-case (e.g., `my-new-icon.svg`). Stroke-based icons should use `stroke="currentColor"` on the stroked shapes and `vector-effect="non-scaling-stroke"` so the stroke width stays constant when the icon is rendered outside the Icon block. The build script only accepts `fill: none` as an inline style. +1. **Add the SVG file**: Place your SVG file in the `src/library/` directory. The filename should be in kebab-case (e.g., `my-new-icon.svg`). Stroke-based icons should use `stroke="currentColor"` on the stroked shapes. Omit `vector-effect` so the stroke width scales with the icon. The build script only accepts `fill: none` as an inline style. 2. **TypeScript files are auto-generated**: The TypeScript component files (`.tsx`) are automatically generated by the build script from the SVG files. You do not need to manually create or edit these files. 3. **Add the icon to `manifest.json`**: Add an entry for your new icon in `src/manifest.json`. The entry should include: diff --git a/packages/icons/lib/test/validate-collection.js b/packages/icons/lib/test/validate-collection.js index 047de6b4172099..20a7b14b4f5756 100644 --- a/packages/icons/lib/test/validate-collection.js +++ b/packages/icons/lib/test/validate-collection.js @@ -1,7 +1,13 @@ +import { mkdtemp, mkdir, rm, writeFile } from 'node:fs/promises'; import { createRequire } from 'node:module'; -import { describe, expect, it } from 'vitest'; +import { tmpdir } from 'node:os'; +import path from 'node:path'; +import { afterEach, beforeEach, describe, expect, it } from 'vitest'; const require = createRequire( import.meta.url ); -const { isStrokeBasedSvg } = require( '../validate-collection.cjs' ); +const { + isStrokeBasedSvg, + validateCollection, +} = require( '../validate-collection.cjs' ); describe( 'isStrokeBasedSvg', () => { it.each( [ @@ -19,3 +25,54 @@ describe( 'isStrokeBasedSvg', () => { ).toBe( false ); } ); } ); + +describe( 'validateCollection', () => { + let fixtureDir; + let iconLibraryDir; + + beforeEach( async () => { + fixtureDir = await mkdtemp( + path.join( tmpdir(), 'icons-collection-' ) + ); + iconLibraryDir = path.join( fixtureDir, 'library' ); + await mkdir( iconLibraryDir ); + await writeFile( + path.join( fixtureDir, 'manifest.json' ), + JSON.stringify( [ + { slug: 'check', filePath: 'library/check.svg' }, + ] ) + ); + } ); + + afterEach( async () => { + await rm( fixtureDir, { recursive: true, force: true } ); + } ); + + it( 'accepts stroke-based library icons without a vector effect', async () => { + await writeFile( + path.join( iconLibraryDir, 'check.svg' ), + '' + ); + + await expect( + validateCollection( iconLibraryDir ) + ).resolves.toBeUndefined(); + } ); + + it.each( [ + '', + '', + '', + ] )( + 'rejects library icons that prevent stroke scaling: %s', + async ( svg ) => { + await writeFile( path.join( iconLibraryDir, 'check.svg' ), svg ); + + await expect( + validateCollection( iconLibraryDir ) + ).rejects.toThrow( + 'must omit vector-effect so its stroke width scales with its size' + ); + } + ); +} ); diff --git a/packages/icons/lib/validate-collection.cjs b/packages/icons/lib/validate-collection.cjs index a01121d6dfead6..d30856c37a24c5 100644 --- a/packages/icons/lib/validate-collection.cjs +++ b/packages/icons/lib/validate-collection.cjs @@ -22,10 +22,10 @@ function isStrokeBasedSvg( svgContent ) { * - Each SVG uses currentColor so icons inherit text color. * - Each SVG uses viewBox="0 0 24 24". * - Each stroke-based SVG contains at least one stroked graphical element. - * - Each stroked graphical element uses a non-scaling stroke. + * - Each SVG omits vector-effect so strokes scale with the icon. */ -async function validateCollection() { - const manifestPath = path.join( ICON_LIBRARY_DIR, '..', 'manifest.json' ); +async function validateCollection( iconLibraryDir = ICON_LIBRARY_DIR ) { + const manifestPath = path.join( iconLibraryDir, '..', 'manifest.json' ); try { await stat( manifestPath ); @@ -114,13 +114,13 @@ async function validateCollection() { * Verify that the corresponding SVG file is found. */ if ( - ! ( await stat( - path.join( ICON_LIBRARY_DIR, '..', expected ) - ).catch( () => false ) ) + ! ( await stat( path.join( iconLibraryDir, '..', expected ) ).catch( + () => false + ) ) ) { problems.push( `- Icon file ${ path.join( - ICON_LIBRARY_DIR, + iconLibraryDir, '..', expected ) } not found` @@ -132,7 +132,7 @@ async function validateCollection() { * Conversely, check that all the SVG files under library/ are listed in * the manifest. */ - const svgFiles = ( await readdir( ICON_LIBRARY_DIR ) ) + const svgFiles = ( await readdir( iconLibraryDir ) ) .filter( ( file ) => file.match( /^[a-z0-9--]+\.svg$/ ) ) .map( ( file ) => path.join( 'library', file ) ) @@ -140,7 +140,7 @@ async function validateCollection() { .map( ( file ) => file.replaceAll( path.sep, '/' ) ); for ( const file of svgFiles ) { - const svgPath = path.join( ICON_LIBRARY_DIR, path.basename( file ) ); + const svgPath = path.join( iconLibraryDir, path.basename( file ) ); if ( ! manifestPaths.includes( file ) ) { problems.push( `- Missing entry for icon ${ svgPath }` ); @@ -163,6 +163,12 @@ async function validateCollection() { ); } + if ( /\svector-effect\s*=/.test( svgContent ) ) { + problems.push( + `- Icon ${ svgPath } must omit vector-effect so its stroke width scales with its size` + ); + } + if ( isStrokeBasedSvg( svgContent ) ) { const graphicalElements = svgContent.match( /<(?:circle|ellipse|line|path|polygon|polyline|rect)\b[^>]*>/g @@ -176,19 +182,6 @@ async function validateCollection() { `- Stroke-based icon ${ svgPath } must contain a graphical element that does not set stroke="none"` ); } - - if ( - strokedElements?.some( - ( element ) => - ! element.includes( - 'vector-effect="non-scaling-stroke"' - ) - ) - ) { - problems.push( - `- Stroked elements in ${ svgPath } must set vector-effect="non-scaling-stroke"` - ); - } } } diff --git a/packages/icons/src/icon/stories/index.story.tsx b/packages/icons/src/icon/stories/index.story.tsx index 4b6aacd2a2455a..db1b7ef806db57 100644 --- a/packages/icons/src/icon/stories/index.story.tsx +++ b/packages/icons/src/icon/stories/index.story.tsx @@ -59,3 +59,36 @@ export const CurrentColor: StoryFn< typeof Icon > = ( args ) => { CurrentColor.args = { icon: icons.wordpress, }; + +export const StrokeScaling = (): ReactElement => ( + + + + + + { [ 16, 20, 24, 36, 48 ].map( ( size ) => ( + + ) ) } + + + + { [ + { label: 'Check', icon: icons.check }, + { label: 'Paragraph', icon: icons.paragraph }, + { label: 'Image', icon: icons.image }, + { label: 'Settings', icon: icons.cog }, + ].map( ( { label, icon } ) => ( + + + { [ 16, 20, 24, 36, 48 ].map( ( size ) => ( + + ) ) } + + ) ) } + +
Stroke-based icons at different sizes
Icon + { size }px +
{ label } + +
+); diff --git a/packages/icons/src/icon/test/index.browser.test.tsx b/packages/icons/src/icon/test/index.browser.test.tsx index 4a196c6a9b7689..fb56ea756a9363 100644 --- a/packages/icons/src/icon/test/index.browser.test.tsx +++ b/packages/icons/src/icon/test/index.browser.test.tsx @@ -2,8 +2,31 @@ import { describe, expect, it } from 'vitest'; import { screen } from '@testing-library/react'; import { render } from 'vitest-browser-react'; import Icon from '..'; +import check from '../../library/check'; describe( 'Icon', () => { + it.each( [ 16, 20, 24 ] )( + 'renders library icons with scaling strokes at %ipx', + async ( size ) => { + await render( + + ); + + const icon = screen.getByTestId( 'scaled-icon' ); + // SVG stroke geometry has no Testing Library query. + // eslint-disable-next-line testing-library/no-node-access + const shape = icon.querySelector( 'path' )!; + const scale = shape.getScreenCTM()!; + + expect( icon.getBoundingClientRect().width ).toBe( size ); + expect( icon.getBoundingClientRect().height ).toBe( size ); + expect( shape ).toHaveStyle( 'vector-effect: none' ); + expect( + parseFloat( getComputedStyle( shape ).strokeWidth ) * scale.a + ).toBeCloseTo( ( 1.5 * size ) / 24 ); + } + ); + it( "merges consumer styles with the icon's intrinsic styles", async () => { await render( - + diff --git a/packages/icons/src/library/accordion-item.svg b/packages/icons/src/library/accordion-item.svg index fe7bb7aa2d7f7c..e0cf22b7b0ea37 100644 --- a/packages/icons/src/library/accordion-item.svg +++ b/packages/icons/src/library/accordion-item.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/accordion.svg b/packages/icons/src/library/accordion.svg index c53bf267fbd842..961f3aa9f03fd6 100644 --- a/packages/icons/src/library/accordion.svg +++ b/packages/icons/src/library/accordion.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/add-card.svg b/packages/icons/src/library/add-card.svg index 7bc774b83e0f41..73b169304d93c9 100644 --- a/packages/icons/src/library/add-card.svg +++ b/packages/icons/src/library/add-card.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/add-submenu.svg b/packages/icons/src/library/add-submenu.svg index 850bcdec5a6a78..9b86a783770f3e 100644 --- a/packages/icons/src/library/add-submenu.svg +++ b/packages/icons/src/library/add-submenu.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/add-template.svg b/packages/icons/src/library/add-template.svg index 6fdd6d46f17ae9..3c889a782ef6cc 100644 --- a/packages/icons/src/library/add-template.svg +++ b/packages/icons/src/library/add-template.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/align-center.svg b/packages/icons/src/library/align-center.svg index bc912fb851c6da..7a6df4345a2500 100644 --- a/packages/icons/src/library/align-center.svg +++ b/packages/icons/src/library/align-center.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/align-justify.svg b/packages/icons/src/library/align-justify.svg index 3240274e131d23..98a1be0205b618 100644 --- a/packages/icons/src/library/align-justify.svg +++ b/packages/icons/src/library/align-justify.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/align-left.svg b/packages/icons/src/library/align-left.svg index 774925abf9b046..d1988fc3b7e08e 100644 --- a/packages/icons/src/library/align-left.svg +++ b/packages/icons/src/library/align-left.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/align-none.svg b/packages/icons/src/library/align-none.svg index 6c5ab81541ffb0..ae55ab4db698a8 100644 --- a/packages/icons/src/library/align-none.svg +++ b/packages/icons/src/library/align-none.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/align-right.svg b/packages/icons/src/library/align-right.svg index 653805b6c45279..4ea8e220f372a5 100644 --- a/packages/icons/src/library/align-right.svg +++ b/packages/icons/src/library/align-right.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/archive.svg b/packages/icons/src/library/archive.svg index a86a58aacf13c6..62534828532bba 100644 --- a/packages/icons/src/library/archive.svg +++ b/packages/icons/src/library/archive.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/arrow-down-left.svg b/packages/icons/src/library/arrow-down-left.svg index 81581dceafb992..0a9b733714a24e 100644 --- a/packages/icons/src/library/arrow-down-left.svg +++ b/packages/icons/src/library/arrow-down-left.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/arrow-down-right.svg b/packages/icons/src/library/arrow-down-right.svg index e7435f7e8c979d..18d0e404178482 100644 --- a/packages/icons/src/library/arrow-down-right.svg +++ b/packages/icons/src/library/arrow-down-right.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/arrow-down.svg b/packages/icons/src/library/arrow-down.svg index c32a6d28f6e4c5..54cf63c31debaf 100644 --- a/packages/icons/src/library/arrow-down.svg +++ b/packages/icons/src/library/arrow-down.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/arrow-left.svg b/packages/icons/src/library/arrow-left.svg index 5890d0d13ccda7..342225deb876a4 100644 --- a/packages/icons/src/library/arrow-left.svg +++ b/packages/icons/src/library/arrow-left.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/arrow-right.svg b/packages/icons/src/library/arrow-right.svg index ab99d246cc9255..1624978fc53907 100644 --- a/packages/icons/src/library/arrow-right.svg +++ b/packages/icons/src/library/arrow-right.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/arrow-up-left.svg b/packages/icons/src/library/arrow-up-left.svg index 0f61d3d4f59eed..9dbf02ba7a0b09 100644 --- a/packages/icons/src/library/arrow-up-left.svg +++ b/packages/icons/src/library/arrow-up-left.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/arrow-up-right.svg b/packages/icons/src/library/arrow-up-right.svg index d828f0fe648a0a..e81afe61096c60 100644 --- a/packages/icons/src/library/arrow-up-right.svg +++ b/packages/icons/src/library/arrow-up-right.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/arrow-up.svg b/packages/icons/src/library/arrow-up.svg index 581102424165c3..83921ac29baa00 100644 --- a/packages/icons/src/library/arrow-up.svg +++ b/packages/icons/src/library/arrow-up.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/aspect-ratio.svg b/packages/icons/src/library/aspect-ratio.svg index c79775d20d795b..88c76cdde10063 100644 --- a/packages/icons/src/library/aspect-ratio.svg +++ b/packages/icons/src/library/aspect-ratio.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/at-symbol.svg b/packages/icons/src/library/at-symbol.svg index 41e549dc42bf27..9573fa36bdbc7a 100644 --- a/packages/icons/src/library/at-symbol.svg +++ b/packages/icons/src/library/at-symbol.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/audio.svg b/packages/icons/src/library/audio.svg index 8c33428dcbdb48..b49a60e6d7cb61 100644 --- a/packages/icons/src/library/audio.svg +++ b/packages/icons/src/library/audio.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/background.svg b/packages/icons/src/library/background.svg index c79f5559f94566..7ef31c0559c972 100644 --- a/packages/icons/src/library/background.svg +++ b/packages/icons/src/library/background.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/backup.svg b/packages/icons/src/library/backup.svg index d9c152578a55be..4a9d63c1596466 100644 --- a/packages/icons/src/library/backup.svg +++ b/packages/icons/src/library/backup.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/bell-unread.svg b/packages/icons/src/library/bell-unread.svg index bbe54a8bfa3a40..a88ae273895886 100644 --- a/packages/icons/src/library/bell-unread.svg +++ b/packages/icons/src/library/bell-unread.svg @@ -1,5 +1,5 @@ - - - + + + diff --git a/packages/icons/src/library/bell.svg b/packages/icons/src/library/bell.svg index 5ae08d95b66cbb..995d7fb99bfe87 100644 --- a/packages/icons/src/library/bell.svg +++ b/packages/icons/src/library/bell.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/block-default.svg b/packages/icons/src/library/block-default.svg index 196ab98d2c7cab..33d7b7d14b9175 100644 --- a/packages/icons/src/library/block-default.svg +++ b/packages/icons/src/library/block-default.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/block-meta.svg b/packages/icons/src/library/block-meta.svg index 3fad51d72e8f87..04bbcf8bff88ff 100644 --- a/packages/icons/src/library/block-meta.svg +++ b/packages/icons/src/library/block-meta.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/block-table.svg b/packages/icons/src/library/block-table.svg index 4fd03257e4d0d7..39a680f2e589ab 100644 --- a/packages/icons/src/library/block-table.svg +++ b/packages/icons/src/library/block-table.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/border.svg b/packages/icons/src/library/border.svg index 843c86fa162a3e..f26e063f47d897 100644 --- a/packages/icons/src/library/border.svg +++ b/packages/icons/src/library/border.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/box.svg b/packages/icons/src/library/box.svg index 61d332ede03318..a4fe5aaee3fd0f 100644 --- a/packages/icons/src/library/box.svg +++ b/packages/icons/src/library/box.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/breadcrumbs.svg b/packages/icons/src/library/breadcrumbs.svg index c3af877c75560b..f9a81136597922 100644 --- a/packages/icons/src/library/breadcrumbs.svg +++ b/packages/icons/src/library/breadcrumbs.svg @@ -1,5 +1,5 @@ - + diff --git a/packages/icons/src/library/brush.svg b/packages/icons/src/library/brush.svg index 8920a58b75fddc..d0bc160cd5cf01 100644 --- a/packages/icons/src/library/brush.svg +++ b/packages/icons/src/library/brush.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/bug.svg b/packages/icons/src/library/bug.svg index 1ab898d3427dc0..a11dd864fdada9 100644 --- a/packages/icons/src/library/bug.svg +++ b/packages/icons/src/library/bug.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/button.svg b/packages/icons/src/library/button.svg index 989eaf2efe790e..e6d97a86c4ca4b 100644 --- a/packages/icons/src/library/button.svg +++ b/packages/icons/src/library/button.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/buttons.svg b/packages/icons/src/library/buttons.svg index f587a36d285d28..aa315b5c4e5975 100644 --- a/packages/icons/src/library/buttons.svg +++ b/packages/icons/src/library/buttons.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/calendar.svg b/packages/icons/src/library/calendar.svg index a611ebb86dd5e8..8edbaae56bae84 100644 --- a/packages/icons/src/library/calendar.svg +++ b/packages/icons/src/library/calendar.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/cancel-circle-filled.svg b/packages/icons/src/library/cancel-circle-filled.svg index b3340ef8537b49..c8e617427dbbed 100644 --- a/packages/icons/src/library/cancel-circle-filled.svg +++ b/packages/icons/src/library/cancel-circle-filled.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/caption.svg b/packages/icons/src/library/caption.svg index 601f32bd8cf8ec..0c6e0f9889bb20 100644 --- a/packages/icons/src/library/caption.svg +++ b/packages/icons/src/library/caption.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/capture-photo.svg b/packages/icons/src/library/capture-photo.svg index 60372f11f81046..36bc4fea3e12b8 100644 --- a/packages/icons/src/library/capture-photo.svg +++ b/packages/icons/src/library/capture-photo.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/capture-video.svg b/packages/icons/src/library/capture-video.svg index 837659ad05124e..266deb6cee6245 100644 --- a/packages/icons/src/library/capture-video.svg +++ b/packages/icons/src/library/capture-video.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/cart.svg b/packages/icons/src/library/cart.svg index f7b40586c2ddbd..d8e90aacf36826 100644 --- a/packages/icons/src/library/cart.svg +++ b/packages/icons/src/library/cart.svg @@ -1,5 +1,5 @@ - - - + + + diff --git a/packages/icons/src/library/category.svg b/packages/icons/src/library/category.svg index 5dfaa1b2f9f5b4..902af7f77664ef 100644 --- a/packages/icons/src/library/category.svg +++ b/packages/icons/src/library/category.svg @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/packages/icons/src/library/caution-filled.svg b/packages/icons/src/library/caution-filled.svg index 71c72044ab2d4f..9a1d2ced2d5936 100644 --- a/packages/icons/src/library/caution-filled.svg +++ b/packages/icons/src/library/caution-filled.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/caution.svg b/packages/icons/src/library/caution.svg index 11ec7b1df426f8..bb9e48d8e15734 100644 --- a/packages/icons/src/library/caution.svg +++ b/packages/icons/src/library/caution.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/chart-bar.svg b/packages/icons/src/library/chart-bar.svg index 813fcb5045d616..f84559677c6164 100644 --- a/packages/icons/src/library/chart-bar.svg +++ b/packages/icons/src/library/chart-bar.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/check.svg b/packages/icons/src/library/check.svg index 0a6f0a20d2f1b1..42da8cf8599b10 100644 --- a/packages/icons/src/library/check.svg +++ b/packages/icons/src/library/check.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/chevron-down-small.svg b/packages/icons/src/library/chevron-down-small.svg index d7a727bd702c02..0417de798b421c 100644 --- a/packages/icons/src/library/chevron-down-small.svg +++ b/packages/icons/src/library/chevron-down-small.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/chevron-down.svg b/packages/icons/src/library/chevron-down.svg index d7c5227261d4de..e0beea7e87c5bb 100644 --- a/packages/icons/src/library/chevron-down.svg +++ b/packages/icons/src/library/chevron-down.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/chevron-left-small.svg b/packages/icons/src/library/chevron-left-small.svg index 4fc8981f250eb2..83a8b5b64a2f12 100644 --- a/packages/icons/src/library/chevron-left-small.svg +++ b/packages/icons/src/library/chevron-left-small.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/chevron-left.svg b/packages/icons/src/library/chevron-left.svg index d7a40c2c1c7ebf..aaad654f4b4266 100644 --- a/packages/icons/src/library/chevron-left.svg +++ b/packages/icons/src/library/chevron-left.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/chevron-right-small.svg b/packages/icons/src/library/chevron-right-small.svg index 872d7494a66595..791f1b783d77e2 100644 --- a/packages/icons/src/library/chevron-right-small.svg +++ b/packages/icons/src/library/chevron-right-small.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/chevron-right.svg b/packages/icons/src/library/chevron-right.svg index 44c37174dd0017..f040687b62915d 100644 --- a/packages/icons/src/library/chevron-right.svg +++ b/packages/icons/src/library/chevron-right.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/chevron-up-down.svg b/packages/icons/src/library/chevron-up-down.svg index 7253e57b8a8b77..9f8a03aa0bd281 100644 --- a/packages/icons/src/library/chevron-up-down.svg +++ b/packages/icons/src/library/chevron-up-down.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/chevron-up-small.svg b/packages/icons/src/library/chevron-up-small.svg index bee27a88a28f8e..347f0521a1de50 100644 --- a/packages/icons/src/library/chevron-up-small.svg +++ b/packages/icons/src/library/chevron-up-small.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/chevron-up.svg b/packages/icons/src/library/chevron-up.svg index 8afc261bc0592f..1dd6824437a913 100644 --- a/packages/icons/src/library/chevron-up.svg +++ b/packages/icons/src/library/chevron-up.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/classic.svg b/packages/icons/src/library/classic.svg index 560ba81108c850..c32ef5660c6888 100644 --- a/packages/icons/src/library/classic.svg +++ b/packages/icons/src/library/classic.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/close-small.svg b/packages/icons/src/library/close-small.svg index aa032bf8977da8..57ce9e3ee11915 100644 --- a/packages/icons/src/library/close-small.svg +++ b/packages/icons/src/library/close-small.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/close.svg b/packages/icons/src/library/close.svg index 34876a7bdb4a0f..0f5feeaa775355 100644 --- a/packages/icons/src/library/close.svg +++ b/packages/icons/src/library/close.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/cloud-download.svg b/packages/icons/src/library/cloud-download.svg index d9ca62b87696b9..83f4b23caf4417 100644 --- a/packages/icons/src/library/cloud-download.svg +++ b/packages/icons/src/library/cloud-download.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/cloud-upload.svg b/packages/icons/src/library/cloud-upload.svg index 271f227f8fa244..64e63940863159 100644 --- a/packages/icons/src/library/cloud-upload.svg +++ b/packages/icons/src/library/cloud-upload.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/cloud.svg b/packages/icons/src/library/cloud.svg index 901244cee975d5..ad9472c296a42a 100644 --- a/packages/icons/src/library/cloud.svg +++ b/packages/icons/src/library/cloud.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/code.svg b/packages/icons/src/library/code.svg index 65b1f5fd069d3d..60b0186aa89229 100644 --- a/packages/icons/src/library/code.svg +++ b/packages/icons/src/library/code.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/cog.svg b/packages/icons/src/library/cog.svg index ed19bc3e88dab7..6db81669cdb2c2 100644 --- a/packages/icons/src/library/cog.svg +++ b/packages/icons/src/library/cog.svg @@ -1,10 +1,10 @@ - - - - - - - - + + + + + + + + diff --git a/packages/icons/src/library/color.svg b/packages/icons/src/library/color.svg index 30712153918517..bad0fd86242e8e 100644 --- a/packages/icons/src/library/color.svg +++ b/packages/icons/src/library/color.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/column.svg b/packages/icons/src/library/column.svg index 8b638af7ec12f6..5628e1b7e728fb 100644 --- a/packages/icons/src/library/column.svg +++ b/packages/icons/src/library/column.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/columns.svg b/packages/icons/src/library/columns.svg index 6bd6add1888157..12ab3abf565133 100644 --- a/packages/icons/src/library/columns.svg +++ b/packages/icons/src/library/columns.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/comment-author-avatar.svg b/packages/icons/src/library/comment-author-avatar.svg index a23f1f349bf31f..f05eb951caed00 100644 --- a/packages/icons/src/library/comment-author-avatar.svg +++ b/packages/icons/src/library/comment-author-avatar.svg @@ -1,5 +1,5 @@ - - - + + + diff --git a/packages/icons/src/library/comment-author-name.svg b/packages/icons/src/library/comment-author-name.svg index 89f0f85f725690..3e4ce848dde331 100644 --- a/packages/icons/src/library/comment-author-name.svg +++ b/packages/icons/src/library/comment-author-name.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/comment-content.svg b/packages/icons/src/library/comment-content.svg index 609352bbb68bd1..93cb5bb0bddc90 100644 --- a/packages/icons/src/library/comment-content.svg +++ b/packages/icons/src/library/comment-content.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/comment-edit-link.svg b/packages/icons/src/library/comment-edit-link.svg index fa1b41a00e49ce..07655cdaddea6a 100644 --- a/packages/icons/src/library/comment-edit-link.svg +++ b/packages/icons/src/library/comment-edit-link.svg @@ -1,5 +1,5 @@ - - - + + + diff --git a/packages/icons/src/library/comment-reply-link.svg b/packages/icons/src/library/comment-reply-link.svg index ed370aa0f7d075..b3aace7928d977 100644 --- a/packages/icons/src/library/comment-reply-link.svg +++ b/packages/icons/src/library/comment-reply-link.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/comment.svg b/packages/icons/src/library/comment.svg index 8af9615203e250..316360fd6fe505 100644 --- a/packages/icons/src/library/comment.svg +++ b/packages/icons/src/library/comment.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/connection.svg b/packages/icons/src/library/connection.svg index a60c603cd6d683..f0da540164842a 100644 --- a/packages/icons/src/library/connection.svg +++ b/packages/icons/src/library/connection.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/contents.svg b/packages/icons/src/library/contents.svg index c28e383bb71793..819632539a02ab 100644 --- a/packages/icons/src/library/contents.svg +++ b/packages/icons/src/library/contents.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/copy-small.svg b/packages/icons/src/library/copy-small.svg index 4be472eee4b41c..4f5faba0ffdc0a 100644 --- a/packages/icons/src/library/copy-small.svg +++ b/packages/icons/src/library/copy-small.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/copy.svg b/packages/icons/src/library/copy.svg index a46298a03ab9bf..67ecb11d769c6e 100644 --- a/packages/icons/src/library/copy.svg +++ b/packages/icons/src/library/copy.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/corner-all.svg b/packages/icons/src/library/corner-all.svg index 8e8ab721413680..2519e864248520 100644 --- a/packages/icons/src/library/corner-all.svg +++ b/packages/icons/src/library/corner-all.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/corner-bottom-left.svg b/packages/icons/src/library/corner-bottom-left.svg index e3e35fccc942a9..36fae5c50856fa 100644 --- a/packages/icons/src/library/corner-bottom-left.svg +++ b/packages/icons/src/library/corner-bottom-left.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/corner-bottom-right.svg b/packages/icons/src/library/corner-bottom-right.svg index 04e659de2285e3..b9d4ad7916d533 100644 --- a/packages/icons/src/library/corner-bottom-right.svg +++ b/packages/icons/src/library/corner-bottom-right.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/corner-top-left.svg b/packages/icons/src/library/corner-top-left.svg index cdc58bd9678f10..33ed13e2e919e0 100644 --- a/packages/icons/src/library/corner-top-left.svg +++ b/packages/icons/src/library/corner-top-left.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/corner-top-right.svg b/packages/icons/src/library/corner-top-right.svg index d7f3613d0a8033..e34d11387c453e 100644 --- a/packages/icons/src/library/corner-top-right.svg +++ b/packages/icons/src/library/corner-top-right.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/cover.svg b/packages/icons/src/library/cover.svg index 0a45590c3a76b7..dd0103cf935308 100644 --- a/packages/icons/src/library/cover.svg +++ b/packages/icons/src/library/cover.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/create.svg b/packages/icons/src/library/create.svg index 18b49120fbb90a..3241ab393dab55 100644 --- a/packages/icons/src/library/create.svg +++ b/packages/icons/src/library/create.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/crop.svg b/packages/icons/src/library/crop.svg index df9d49b775bb7c..f773b7a4f3b913 100644 --- a/packages/icons/src/library/crop.svg +++ b/packages/icons/src/library/crop.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/currency-dollar.svg b/packages/icons/src/library/currency-dollar.svg index 26c7e2728d80d7..f97197c9fa8a76 100644 --- a/packages/icons/src/library/currency-dollar.svg +++ b/packages/icons/src/library/currency-dollar.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/currency-euro.svg b/packages/icons/src/library/currency-euro.svg index 0f34f13dfe3274..d45d589a813c50 100644 --- a/packages/icons/src/library/currency-euro.svg +++ b/packages/icons/src/library/currency-euro.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/currency-pound.svg b/packages/icons/src/library/currency-pound.svg index 373a87b54819bf..a3eb270c88266e 100644 --- a/packages/icons/src/library/currency-pound.svg +++ b/packages/icons/src/library/currency-pound.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/custom-link.svg b/packages/icons/src/library/custom-link.svg index 7f7526434418ee..afc09f86295b9c 100644 --- a/packages/icons/src/library/custom-link.svg +++ b/packages/icons/src/library/custom-link.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/custom-post-type.svg b/packages/icons/src/library/custom-post-type.svg index 778e5cbf6b0b2b..b351009ff98417 100644 --- a/packages/icons/src/library/custom-post-type.svg +++ b/packages/icons/src/library/custom-post-type.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/dashboard.svg b/packages/icons/src/library/dashboard.svg index a647fde8046258..45d202fc5ffb49 100644 --- a/packages/icons/src/library/dashboard.svg +++ b/packages/icons/src/library/dashboard.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/desktop.svg b/packages/icons/src/library/desktop.svg index f5f39ae8330626..c02be78b1ece1d 100644 --- a/packages/icons/src/library/desktop.svg +++ b/packages/icons/src/library/desktop.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/details.svg b/packages/icons/src/library/details.svg index 0cf2ba54e9203b..8f0548f213770c 100644 --- a/packages/icons/src/library/details.svg +++ b/packages/icons/src/library/details.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/download.svg b/packages/icons/src/library/download.svg index d222df20da821b..6ae3572534fe39 100644 --- a/packages/icons/src/library/download.svg +++ b/packages/icons/src/library/download.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/drafts.svg b/packages/icons/src/library/drafts.svg index 38370cc6ece1ff..2990ebd5272817 100644 --- a/packages/icons/src/library/drafts.svg +++ b/packages/icons/src/library/drafts.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/drag-handle.svg b/packages/icons/src/library/drag-handle.svg index 9a04d7876390dc..863b372f5b266a 100644 --- a/packages/icons/src/library/drag-handle.svg +++ b/packages/icons/src/library/drag-handle.svg @@ -5,10 +5,10 @@ - - - - - - + + + + + + diff --git a/packages/icons/src/library/drawer-left.svg b/packages/icons/src/library/drawer-left.svg index 46313bc2353cd8..bdb283fc624795 100644 --- a/packages/icons/src/library/drawer-left.svg +++ b/packages/icons/src/library/drawer-left.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/drawer-right.svg b/packages/icons/src/library/drawer-right.svg index eebd24eb2a789c..610101a20801e9 100644 --- a/packages/icons/src/library/drawer-right.svg +++ b/packages/icons/src/library/drawer-right.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/envelope.svg b/packages/icons/src/library/envelope.svg index 1492c4367126e5..b7ca09fb1f1d0a 100644 --- a/packages/icons/src/library/envelope.svg +++ b/packages/icons/src/library/envelope.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/error.svg b/packages/icons/src/library/error.svg index 7c5b3d10635d20..7881d48a57a47e 100644 --- a/packages/icons/src/library/error.svg +++ b/packages/icons/src/library/error.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/external.svg b/packages/icons/src/library/external.svg index 4a41478fe237ed..d4bdbedae379be 100644 --- a/packages/icons/src/library/external.svg +++ b/packages/icons/src/library/external.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/file.svg b/packages/icons/src/library/file.svg index 8689d34c4465ed..f1dc215d229e46 100644 --- a/packages/icons/src/library/file.svg +++ b/packages/icons/src/library/file.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/filter.svg b/packages/icons/src/library/filter.svg index 1888c2ee6886ce..afb5571b6bfda5 100644 --- a/packages/icons/src/library/filter.svg +++ b/packages/icons/src/library/filter.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/flip-horizontal.svg b/packages/icons/src/library/flip-horizontal.svg index 15ce9059540261..2e9f32d6128262 100644 --- a/packages/icons/src/library/flip-horizontal.svg +++ b/packages/icons/src/library/flip-horizontal.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/flip-vertical.svg b/packages/icons/src/library/flip-vertical.svg index 3d6be66be592ec..092ac3851c0fd0 100644 --- a/packages/icons/src/library/flip-vertical.svg +++ b/packages/icons/src/library/flip-vertical.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/footer.svg b/packages/icons/src/library/footer.svg index 122582f7c4ef3c..af88547b3e0395 100644 --- a/packages/icons/src/library/footer.svg +++ b/packages/icons/src/library/footer.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/format-bold.svg b/packages/icons/src/library/format-bold.svg index b5f464fc4389fc..6d3be1e74526af 100644 --- a/packages/icons/src/library/format-bold.svg +++ b/packages/icons/src/library/format-bold.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/format-capitalize.svg b/packages/icons/src/library/format-capitalize.svg index 74386d1a3f988f..abc74a9a24db15 100644 --- a/packages/icons/src/library/format-capitalize.svg +++ b/packages/icons/src/library/format-capitalize.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/format-indent-rtl.svg b/packages/icons/src/library/format-indent-rtl.svg index bbbba99dc764ed..00e9aa6ad21e27 100644 --- a/packages/icons/src/library/format-indent-rtl.svg +++ b/packages/icons/src/library/format-indent-rtl.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/format-indent.svg b/packages/icons/src/library/format-indent.svg index 004a518556579e..4a0718de562f72 100644 --- a/packages/icons/src/library/format-indent.svg +++ b/packages/icons/src/library/format-indent.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/format-italic.svg b/packages/icons/src/library/format-italic.svg index 9046bc447038a1..3c7f26879a7203 100644 --- a/packages/icons/src/library/format-italic.svg +++ b/packages/icons/src/library/format-italic.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/format-list-bullets-rtl.svg b/packages/icons/src/library/format-list-bullets-rtl.svg index 1140021543bec2..228adca98c7c54 100644 --- a/packages/icons/src/library/format-list-bullets-rtl.svg +++ b/packages/icons/src/library/format-list-bullets-rtl.svg @@ -1,7 +1,7 @@ - + - - + + diff --git a/packages/icons/src/library/format-list-bullets.svg b/packages/icons/src/library/format-list-bullets.svg index 905176634cb681..82d7c9460bad41 100644 --- a/packages/icons/src/library/format-list-bullets.svg +++ b/packages/icons/src/library/format-list-bullets.svg @@ -1,7 +1,7 @@ - + - - + + diff --git a/packages/icons/src/library/format-list-numbered-rtl.svg b/packages/icons/src/library/format-list-numbered-rtl.svg index dd726b1e10db49..e38e190f45ca5f 100644 --- a/packages/icons/src/library/format-list-numbered-rtl.svg +++ b/packages/icons/src/library/format-list-numbered-rtl.svg @@ -1,5 +1,5 @@ - - - + + + diff --git a/packages/icons/src/library/format-list-numbered.svg b/packages/icons/src/library/format-list-numbered.svg index 5dfa0ae0a3d469..4510d8786bf823 100644 --- a/packages/icons/src/library/format-list-numbered.svg +++ b/packages/icons/src/library/format-list-numbered.svg @@ -1,5 +1,5 @@ - - - + + + diff --git a/packages/icons/src/library/format-lowercase.svg b/packages/icons/src/library/format-lowercase.svg index 166b6bdac16bd6..77e5405ad5beae 100644 --- a/packages/icons/src/library/format-lowercase.svg +++ b/packages/icons/src/library/format-lowercase.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/format-ltr.svg b/packages/icons/src/library/format-ltr.svg index 3997ae5d800326..f46c8647a1783c 100644 --- a/packages/icons/src/library/format-ltr.svg +++ b/packages/icons/src/library/format-ltr.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/format-outdent-rtl.svg b/packages/icons/src/library/format-outdent-rtl.svg index 1dc6861c70c0bb..71376351a3452f 100644 --- a/packages/icons/src/library/format-outdent-rtl.svg +++ b/packages/icons/src/library/format-outdent-rtl.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/format-outdent.svg b/packages/icons/src/library/format-outdent.svg index 39278d02753567..0f8770f1e6d370 100644 --- a/packages/icons/src/library/format-outdent.svg +++ b/packages/icons/src/library/format-outdent.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/format-rtl.svg b/packages/icons/src/library/format-rtl.svg index 7dd824f4fc0172..81d51aaa3b7489 100644 --- a/packages/icons/src/library/format-rtl.svg +++ b/packages/icons/src/library/format-rtl.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/format-strikethrough.svg b/packages/icons/src/library/format-strikethrough.svg index 6e78228638afdf..6626031aa794b9 100644 --- a/packages/icons/src/library/format-strikethrough.svg +++ b/packages/icons/src/library/format-strikethrough.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/format-underline.svg b/packages/icons/src/library/format-underline.svg index 33979840352321..424bfeb7064040 100644 --- a/packages/icons/src/library/format-underline.svg +++ b/packages/icons/src/library/format-underline.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/format-uppercase.svg b/packages/icons/src/library/format-uppercase.svg index e9628a1bedde73..167e7848897efb 100644 --- a/packages/icons/src/library/format-uppercase.svg +++ b/packages/icons/src/library/format-uppercase.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/full-height.svg b/packages/icons/src/library/full-height.svg index 2411501056130e..c0e7f4281ce792 100644 --- a/packages/icons/src/library/full-height.svg +++ b/packages/icons/src/library/full-height.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/fullscreen-exit.svg b/packages/icons/src/library/fullscreen-exit.svg index 8961e3ad07ec34..90a2941a44aa28 100644 --- a/packages/icons/src/library/fullscreen-exit.svg +++ b/packages/icons/src/library/fullscreen-exit.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/fullscreen.svg b/packages/icons/src/library/fullscreen.svg index edc20f67ad9b0c..a7e10abd635a10 100644 --- a/packages/icons/src/library/fullscreen.svg +++ b/packages/icons/src/library/fullscreen.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/funnel.svg b/packages/icons/src/library/funnel.svg index 635385297cca38..ffac5bc76df0d9 100644 --- a/packages/icons/src/library/funnel.svg +++ b/packages/icons/src/library/funnel.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/gallery.svg b/packages/icons/src/library/gallery.svg index 341ceed53bc9f5..fd02139fb3b554 100644 --- a/packages/icons/src/library/gallery.svg +++ b/packages/icons/src/library/gallery.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/gift.svg b/packages/icons/src/library/gift.svg index 0f24f594fd7f3f..258546017e8074 100644 --- a/packages/icons/src/library/gift.svg +++ b/packages/icons/src/library/gift.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/globe.svg b/packages/icons/src/library/globe.svg index 44317241fd38f1..b43aa11a967f55 100644 --- a/packages/icons/src/library/globe.svg +++ b/packages/icons/src/library/globe.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/grid.svg b/packages/icons/src/library/grid.svg index 81d3d8f68cb7cc..d5bf6214c34d72 100644 --- a/packages/icons/src/library/grid.svg +++ b/packages/icons/src/library/grid.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/group.svg b/packages/icons/src/library/group.svg index 656f16b2c29571..7490dbe0f48716 100644 --- a/packages/icons/src/library/group.svg +++ b/packages/icons/src/library/group.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/handle.svg b/packages/icons/src/library/handle.svg index afd2470f4a12c9..79f79ac20b939e 100644 --- a/packages/icons/src/library/handle.svg +++ b/packages/icons/src/library/handle.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/header.svg b/packages/icons/src/library/header.svg index 7b49e01f30f27d..c0c289b6f3aefc 100644 --- a/packages/icons/src/library/header.svg +++ b/packages/icons/src/library/header.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/heading-level-1.svg b/packages/icons/src/library/heading-level-1.svg index 31aece54c96702..af350c5566a738 100644 --- a/packages/icons/src/library/heading-level-1.svg +++ b/packages/icons/src/library/heading-level-1.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/heading-level-2.svg b/packages/icons/src/library/heading-level-2.svg index abe429e80c24ef..3ccf1bf2f05664 100644 --- a/packages/icons/src/library/heading-level-2.svg +++ b/packages/icons/src/library/heading-level-2.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/heading-level-3.svg b/packages/icons/src/library/heading-level-3.svg index d58b8343d8d33f..65f23453f48409 100644 --- a/packages/icons/src/library/heading-level-3.svg +++ b/packages/icons/src/library/heading-level-3.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/heading-level-4.svg b/packages/icons/src/library/heading-level-4.svg index f3682afe9236a2..92a886ca2abfab 100644 --- a/packages/icons/src/library/heading-level-4.svg +++ b/packages/icons/src/library/heading-level-4.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/heading-level-5.svg b/packages/icons/src/library/heading-level-5.svg index 216cf497285193..dfded7fe7b04c9 100644 --- a/packages/icons/src/library/heading-level-5.svg +++ b/packages/icons/src/library/heading-level-5.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/heading-level-6.svg b/packages/icons/src/library/heading-level-6.svg index a60c043def89c3..0bc7f98be10ca0 100644 --- a/packages/icons/src/library/heading-level-6.svg +++ b/packages/icons/src/library/heading-level-6.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/heading.svg b/packages/icons/src/library/heading.svg index 56bf3ed64ef3f8..b5e9440ea4b605 100644 --- a/packages/icons/src/library/heading.svg +++ b/packages/icons/src/library/heading.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/help-filled.svg b/packages/icons/src/library/help-filled.svg index e8364992522364..6559061c222bc7 100644 --- a/packages/icons/src/library/help-filled.svg +++ b/packages/icons/src/library/help-filled.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/help.svg b/packages/icons/src/library/help.svg index 85d465377f0d06..c02588b9cb3360 100644 --- a/packages/icons/src/library/help.svg +++ b/packages/icons/src/library/help.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/home-button.svg b/packages/icons/src/library/home-button.svg index 81ae5ae49e8c94..abcdaeaa9cdf44 100644 --- a/packages/icons/src/library/home-button.svg +++ b/packages/icons/src/library/home-button.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/home.svg b/packages/icons/src/library/home.svg index 4ca43500a4b6b6..88515dd956c79d 100644 --- a/packages/icons/src/library/home.svg +++ b/packages/icons/src/library/home.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/html.svg b/packages/icons/src/library/html.svg index 7bc0f513a12735..eba4368aabb1bb 100644 --- a/packages/icons/src/library/html.svg +++ b/packages/icons/src/library/html.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/image.svg b/packages/icons/src/library/image.svg index 4e47bdbfbe9ad3..4fc2047feb3b3d 100644 --- a/packages/icons/src/library/image.svg +++ b/packages/icons/src/library/image.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/inbox.svg b/packages/icons/src/library/inbox.svg index ff2ba62cb1eb6e..58b0dafd40d4e2 100644 --- a/packages/icons/src/library/inbox.svg +++ b/packages/icons/src/library/inbox.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/info.svg b/packages/icons/src/library/info.svg index ebd757078da72f..223ad121991fe6 100644 --- a/packages/icons/src/library/info.svg +++ b/packages/icons/src/library/info.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/inline-image.svg b/packages/icons/src/library/inline-image.svg index 764232088dbcde..1e70da21dba454 100644 --- a/packages/icons/src/library/inline-image.svg +++ b/packages/icons/src/library/inline-image.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/institution.svg b/packages/icons/src/library/institution.svg index f27242f8e19aa4..756d4f5ce8ac7a 100644 --- a/packages/icons/src/library/institution.svg +++ b/packages/icons/src/library/institution.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/justify-bottom.svg b/packages/icons/src/library/justify-bottom.svg index c6f58230c716fd..bb73feecff791f 100644 --- a/packages/icons/src/library/justify-bottom.svg +++ b/packages/icons/src/library/justify-bottom.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/justify-center-vertical.svg b/packages/icons/src/library/justify-center-vertical.svg index 547ed61da52eca..d0e60a39bfb42d 100644 --- a/packages/icons/src/library/justify-center-vertical.svg +++ b/packages/icons/src/library/justify-center-vertical.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/justify-center.svg b/packages/icons/src/library/justify-center.svg index 563e07619fbb7c..ea12a23291a50b 100644 --- a/packages/icons/src/library/justify-center.svg +++ b/packages/icons/src/library/justify-center.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/justify-left.svg b/packages/icons/src/library/justify-left.svg index d01f13873d06ed..894c7188b9c3ca 100644 --- a/packages/icons/src/library/justify-left.svg +++ b/packages/icons/src/library/justify-left.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/justify-right.svg b/packages/icons/src/library/justify-right.svg index 2191012086a816..f51b632a66ec5f 100644 --- a/packages/icons/src/library/justify-right.svg +++ b/packages/icons/src/library/justify-right.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/justify-space-around.svg b/packages/icons/src/library/justify-space-around.svg index 73dea7910cd9d1..78c8dde38eab1a 100644 --- a/packages/icons/src/library/justify-space-around.svg +++ b/packages/icons/src/library/justify-space-around.svg @@ -1,6 +1,6 @@ - - + + diff --git a/packages/icons/src/library/justify-space-between-vertical.svg b/packages/icons/src/library/justify-space-between-vertical.svg index fd7efb4c846939..287f983a77175a 100644 --- a/packages/icons/src/library/justify-space-between-vertical.svg +++ b/packages/icons/src/library/justify-space-between-vertical.svg @@ -1,5 +1,5 @@ - + diff --git a/packages/icons/src/library/justify-space-between.svg b/packages/icons/src/library/justify-space-between.svg index 2dec57e2b6f2a7..b3b83ec345e44e 100644 --- a/packages/icons/src/library/justify-space-between.svg +++ b/packages/icons/src/library/justify-space-between.svg @@ -1,6 +1,6 @@ - - + + diff --git a/packages/icons/src/library/justify-space-evenly.svg b/packages/icons/src/library/justify-space-evenly.svg index 053d6ac680c415..774a84e00d67d0 100644 --- a/packages/icons/src/library/justify-space-evenly.svg +++ b/packages/icons/src/library/justify-space-evenly.svg @@ -1,6 +1,6 @@ - - + + diff --git a/packages/icons/src/library/justify-stretch-vertical.svg b/packages/icons/src/library/justify-stretch-vertical.svg index e9dc470be4662c..908138fb973aff 100644 --- a/packages/icons/src/library/justify-stretch-vertical.svg +++ b/packages/icons/src/library/justify-stretch-vertical.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/justify-stretch.svg b/packages/icons/src/library/justify-stretch.svg index 7daab26744951c..ef88983e92f3b6 100644 --- a/packages/icons/src/library/justify-stretch.svg +++ b/packages/icons/src/library/justify-stretch.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/justify-top.svg b/packages/icons/src/library/justify-top.svg index eb40e9485da52c..fa6c894eb49c61 100644 --- a/packages/icons/src/library/justify-top.svg +++ b/packages/icons/src/library/justify-top.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/key.svg b/packages/icons/src/library/key.svg index 7a53fb31d47210..4f5a4e71322333 100644 --- a/packages/icons/src/library/key.svg +++ b/packages/icons/src/library/key.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/keyboard-close.svg b/packages/icons/src/library/keyboard-close.svg index 56dcc023259f9a..24f8d3a1ae7e40 100644 --- a/packages/icons/src/library/keyboard-close.svg +++ b/packages/icons/src/library/keyboard-close.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/keyboard-return.svg b/packages/icons/src/library/keyboard-return.svg index 904594568b63fc..88e9f8c7a1b216 100644 --- a/packages/icons/src/library/keyboard-return.svg +++ b/packages/icons/src/library/keyboard-return.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/keyboard.svg b/packages/icons/src/library/keyboard.svg index 56f1f78d7cef9a..450ede553ccde3 100644 --- a/packages/icons/src/library/keyboard.svg +++ b/packages/icons/src/library/keyboard.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/language.svg b/packages/icons/src/library/language.svg index 0416024acaa288..4901609c2cc5f9 100644 --- a/packages/icons/src/library/language.svg +++ b/packages/icons/src/library/language.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/layout.svg b/packages/icons/src/library/layout.svg index 7baaf3cd67490a..fdf6b32124aee1 100644 --- a/packages/icons/src/library/layout.svg +++ b/packages/icons/src/library/layout.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/level-up.svg b/packages/icons/src/library/level-up.svg index e72a0084612ee2..ac49971abbb748 100644 --- a/packages/icons/src/library/level-up.svg +++ b/packages/icons/src/library/level-up.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/lifesaver.svg b/packages/icons/src/library/lifesaver.svg index 55a9675f3c9351..59f2b4771270d2 100644 --- a/packages/icons/src/library/lifesaver.svg +++ b/packages/icons/src/library/lifesaver.svg @@ -3,10 +3,10 @@ - - - - - - + + + + + + diff --git a/packages/icons/src/library/line-dashed.svg b/packages/icons/src/library/line-dashed.svg index 25775b54ba670d..cceebe845bfce4 100644 --- a/packages/icons/src/library/line-dashed.svg +++ b/packages/icons/src/library/line-dashed.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/line-dotted.svg b/packages/icons/src/library/line-dotted.svg index 67252860378fd4..198d15b3412b23 100644 --- a/packages/icons/src/library/line-dotted.svg +++ b/packages/icons/src/library/line-dotted.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/line-solid.svg b/packages/icons/src/library/line-solid.svg index a07fb26a759d97..c256daf1bdd7b2 100644 --- a/packages/icons/src/library/line-solid.svg +++ b/packages/icons/src/library/line-solid.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/link-off.svg b/packages/icons/src/library/link-off.svg index 0114cfc0423985..9dd3b994126c5d 100644 --- a/packages/icons/src/library/link-off.svg +++ b/packages/icons/src/library/link-off.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/link.svg b/packages/icons/src/library/link.svg index 3b26817bab185b..ab768559a78f19 100644 --- a/packages/icons/src/library/link.svg +++ b/packages/icons/src/library/link.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/list-item.svg b/packages/icons/src/library/list-item.svg index d89375b0ad89fc..894f08418fc6df 100644 --- a/packages/icons/src/library/list-item.svg +++ b/packages/icons/src/library/list-item.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/list-view.svg b/packages/icons/src/library/list-view.svg index 306309dabd29c6..a11c206f0750d5 100644 --- a/packages/icons/src/library/list-view.svg +++ b/packages/icons/src/library/list-view.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/list.svg b/packages/icons/src/library/list.svg index 29d7478d77db16..323e69f769297d 100644 --- a/packages/icons/src/library/list.svg +++ b/packages/icons/src/library/list.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/lock-outline.svg b/packages/icons/src/library/lock-outline.svg index 83c75636042c6c..b22c8b35d632ba 100644 --- a/packages/icons/src/library/lock-outline.svg +++ b/packages/icons/src/library/lock-outline.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/lock.svg b/packages/icons/src/library/lock.svg index 28b81c0bedcb75..77edd14354ffce 100644 --- a/packages/icons/src/library/lock.svg +++ b/packages/icons/src/library/lock.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/login.svg b/packages/icons/src/library/login.svg index e5e75ce682b6c5..683e301ab42da2 100644 --- a/packages/icons/src/library/login.svg +++ b/packages/icons/src/library/login.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/loop.svg b/packages/icons/src/library/loop.svg index 5e3284b13763dc..64d5aa230074e5 100644 --- a/packages/icons/src/library/loop.svg +++ b/packages/icons/src/library/loop.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/map-marker.svg b/packages/icons/src/library/map-marker.svg index faf01f0c56d55d..4380cf917f1a4a 100644 --- a/packages/icons/src/library/map-marker.svg +++ b/packages/icons/src/library/map-marker.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/math.svg b/packages/icons/src/library/math.svg index fdfb818030564b..acafa877873ea3 100644 --- a/packages/icons/src/library/math.svg +++ b/packages/icons/src/library/math.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/media-and-text.svg b/packages/icons/src/library/media-and-text.svg index a1e6fa73aed0ee..1781912e1216d9 100644 --- a/packages/icons/src/library/media-and-text.svg +++ b/packages/icons/src/library/media-and-text.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/media.svg b/packages/icons/src/library/media.svg index bd44218535f242..0fef35e4ea6efc 100644 --- a/packages/icons/src/library/media.svg +++ b/packages/icons/src/library/media.svg @@ -1,8 +1,8 @@ - - - - - - + + + + + + diff --git a/packages/icons/src/library/megaphone.svg b/packages/icons/src/library/megaphone.svg index ff8875e9215377..3148990eafd8ec 100644 --- a/packages/icons/src/library/megaphone.svg +++ b/packages/icons/src/library/megaphone.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/menu.svg b/packages/icons/src/library/menu.svg index 2564551e038fd8..69f6f5b73200f3 100644 --- a/packages/icons/src/library/menu.svg +++ b/packages/icons/src/library/menu.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/mobile.svg b/packages/icons/src/library/mobile.svg index 56b59971a6579f..27ba1d99d374be 100644 --- a/packages/icons/src/library/mobile.svg +++ b/packages/icons/src/library/mobile.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/more-horizontal.svg b/packages/icons/src/library/more-horizontal.svg index f86b85310aa178..6dac8809b02334 100644 --- a/packages/icons/src/library/more-horizontal.svg +++ b/packages/icons/src/library/more-horizontal.svg @@ -2,7 +2,7 @@ - - - + + + diff --git a/packages/icons/src/library/more-vertical.svg b/packages/icons/src/library/more-vertical.svg index d102d6cf62628c..afa028be7e5fe5 100644 --- a/packages/icons/src/library/more-vertical.svg +++ b/packages/icons/src/library/more-vertical.svg @@ -2,7 +2,7 @@ - - - + + + diff --git a/packages/icons/src/library/more.svg b/packages/icons/src/library/more.svg index 73fa6f286debd0..cb622d766a5621 100644 --- a/packages/icons/src/library/more.svg +++ b/packages/icons/src/library/more.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/move-to.svg b/packages/icons/src/library/move-to.svg index c0b184377dcdda..4e9a8256f297dc 100644 --- a/packages/icons/src/library/move-to.svg +++ b/packages/icons/src/library/move-to.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/navigation-overlay.svg b/packages/icons/src/library/navigation-overlay.svg index 929447a9437879..1fa6a607dfb1a1 100644 --- a/packages/icons/src/library/navigation-overlay.svg +++ b/packages/icons/src/library/navigation-overlay.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/navigation.svg b/packages/icons/src/library/navigation.svg index ef6001c9dcb932..a5563ccbe13813 100644 --- a/packages/icons/src/library/navigation.svg +++ b/packages/icons/src/library/navigation.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/next.svg b/packages/icons/src/library/next.svg index 9c436f08d79dc0..f881f103a7b260 100644 --- a/packages/icons/src/library/next.svg +++ b/packages/icons/src/library/next.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/not-allowed.svg b/packages/icons/src/library/not-allowed.svg index fa41012112a8b9..f503274792aef0 100644 --- a/packages/icons/src/library/not-allowed.svg +++ b/packages/icons/src/library/not-allowed.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/not-found.svg b/packages/icons/src/library/not-found.svg index a477023a5d68fa..7cd5dd68a33677 100644 --- a/packages/icons/src/library/not-found.svg +++ b/packages/icons/src/library/not-found.svg @@ -1,5 +1,5 @@ - - - + + + diff --git a/packages/icons/src/library/overlay-text.svg b/packages/icons/src/library/overlay-text.svg index ce52ffad49ae94..8f0a1cfc8a6d5b 100644 --- a/packages/icons/src/library/overlay-text.svg +++ b/packages/icons/src/library/overlay-text.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/page-break.svg b/packages/icons/src/library/page-break.svg index 7c57f077fabc3b..3b4d9d120004c4 100644 --- a/packages/icons/src/library/page-break.svg +++ b/packages/icons/src/library/page-break.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/page.svg b/packages/icons/src/library/page.svg index 3ac632e7487fcc..40864e6c37720d 100644 --- a/packages/icons/src/library/page.svg +++ b/packages/icons/src/library/page.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/pages.svg b/packages/icons/src/library/pages.svg index 94741591609692..22c1b8b3f5024c 100644 --- a/packages/icons/src/library/pages.svg +++ b/packages/icons/src/library/pages.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/paragraph.svg b/packages/icons/src/library/paragraph.svg index b76197865e9d70..120c4ae2d07115 100644 --- a/packages/icons/src/library/paragraph.svg +++ b/packages/icons/src/library/paragraph.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/pause.svg b/packages/icons/src/library/pause.svg index ec6c3fa5254573..7b5befc131ce2b 100644 --- a/packages/icons/src/library/pause.svg +++ b/packages/icons/src/library/pause.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/payment.svg b/packages/icons/src/library/payment.svg index 0f3a9868dc80f1..283a9adcb3dc12 100644 --- a/packages/icons/src/library/payment.svg +++ b/packages/icons/src/library/payment.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/pencil.svg b/packages/icons/src/library/pencil.svg index 18d3d8887642d6..d30ebb068d1bef 100644 --- a/packages/icons/src/library/pencil.svg +++ b/packages/icons/src/library/pencil.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/pending.svg b/packages/icons/src/library/pending.svg index 88af35d308d692..d0043e778b0983 100644 --- a/packages/icons/src/library/pending.svg +++ b/packages/icons/src/library/pending.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/people.svg b/packages/icons/src/library/people.svg index ebb5ded4e2c879..40cb37bd3dcb69 100644 --- a/packages/icons/src/library/people.svg +++ b/packages/icons/src/library/people.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/percent.svg b/packages/icons/src/library/percent.svg index 1e837135a9b80c..360dae34fb943a 100644 --- a/packages/icons/src/library/percent.svg +++ b/packages/icons/src/library/percent.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/pin.svg b/packages/icons/src/library/pin.svg index 1b2803fe62424b..212a06d494d41c 100644 --- a/packages/icons/src/library/pin.svg +++ b/packages/icons/src/library/pin.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/play.svg b/packages/icons/src/library/play.svg index e064b994244ff0..cb387fbbab47ce 100644 --- a/packages/icons/src/library/play.svg +++ b/packages/icons/src/library/play.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/playlist-track.svg b/packages/icons/src/library/playlist-track.svg index fee194d970ce0b..42e5b2cfc87af5 100644 --- a/packages/icons/src/library/playlist-track.svg +++ b/packages/icons/src/library/playlist-track.svg @@ -1,5 +1,5 @@ - + - + diff --git a/packages/icons/src/library/playlist.svg b/packages/icons/src/library/playlist.svg index 34cb05c7dfc3de..648e4a587e5213 100644 --- a/packages/icons/src/library/playlist.svg +++ b/packages/icons/src/library/playlist.svg @@ -1,5 +1,5 @@ - + - + diff --git a/packages/icons/src/library/plugins.svg b/packages/icons/src/library/plugins.svg index 83d4ca92353d3f..81df52042701f9 100644 --- a/packages/icons/src/library/plugins.svg +++ b/packages/icons/src/library/plugins.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/plus-circle-filled.svg b/packages/icons/src/library/plus-circle-filled.svg index c93af2a131c3c8..9ad7a98d5080f8 100644 --- a/packages/icons/src/library/plus-circle-filled.svg +++ b/packages/icons/src/library/plus-circle-filled.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/plus-circle.svg b/packages/icons/src/library/plus-circle.svg index c03320908c329e..bd3b7416132d91 100644 --- a/packages/icons/src/library/plus-circle.svg +++ b/packages/icons/src/library/plus-circle.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/plus.svg b/packages/icons/src/library/plus.svg index 13ab663720dc13..615c0deec19dc3 100644 --- a/packages/icons/src/library/plus.svg +++ b/packages/icons/src/library/plus.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/position-center.svg b/packages/icons/src/library/position-center.svg index 991dac4088a516..e47d8dfffccabf 100644 --- a/packages/icons/src/library/position-center.svg +++ b/packages/icons/src/library/position-center.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/position-left.svg b/packages/icons/src/library/position-left.svg index 985c0a57187a3d..52eb5630d30e87 100644 --- a/packages/icons/src/library/position-left.svg +++ b/packages/icons/src/library/position-left.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/position-right.svg b/packages/icons/src/library/position-right.svg index fbbec10f2125d4..2bf82c2ec0db37 100644 --- a/packages/icons/src/library/position-right.svg +++ b/packages/icons/src/library/position-right.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/post-author.svg b/packages/icons/src/library/post-author.svg index 331f38ebf6b49b..9b1a1510696518 100644 --- a/packages/icons/src/library/post-author.svg +++ b/packages/icons/src/library/post-author.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/post-categories.svg b/packages/icons/src/library/post-categories.svg index 9411532f6c8998..ad7a95bc9a9a46 100644 --- a/packages/icons/src/library/post-categories.svg +++ b/packages/icons/src/library/post-categories.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/post-comments-count.svg b/packages/icons/src/library/post-comments-count.svg index 78412e7e5f838e..6840d1096518ed 100644 --- a/packages/icons/src/library/post-comments-count.svg +++ b/packages/icons/src/library/post-comments-count.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/post-comments-form.svg b/packages/icons/src/library/post-comments-form.svg index 4ac32707d8ab38..a7e022db763364 100644 --- a/packages/icons/src/library/post-comments-form.svg +++ b/packages/icons/src/library/post-comments-form.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/post-comments.svg b/packages/icons/src/library/post-comments.svg index c6fcd6c1611e4e..1182010081124b 100644 --- a/packages/icons/src/library/post-comments.svg +++ b/packages/icons/src/library/post-comments.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/post-content.svg b/packages/icons/src/library/post-content.svg index 99daefc054318a..19a73295f874b2 100644 --- a/packages/icons/src/library/post-content.svg +++ b/packages/icons/src/library/post-content.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/post-date.svg b/packages/icons/src/library/post-date.svg index 9856792ec5653a..dd477c1fe5a44d 100644 --- a/packages/icons/src/library/post-date.svg +++ b/packages/icons/src/library/post-date.svg @@ -1,5 +1,5 @@ - - - + + + diff --git a/packages/icons/src/library/post-excerpt.svg b/packages/icons/src/library/post-excerpt.svg index e727c5ffe0642d..d54e828517e3e8 100644 --- a/packages/icons/src/library/post-excerpt.svg +++ b/packages/icons/src/library/post-excerpt.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/post-featured-image.svg b/packages/icons/src/library/post-featured-image.svg index d6648b1121dc52..03493e2d249f19 100644 --- a/packages/icons/src/library/post-featured-image.svg +++ b/packages/icons/src/library/post-featured-image.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/post-list.svg b/packages/icons/src/library/post-list.svg index 6c6f7050508c98..936a007f14f79b 100644 --- a/packages/icons/src/library/post-list.svg +++ b/packages/icons/src/library/post-list.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/post-terms.svg b/packages/icons/src/library/post-terms.svg index 54d973f502d600..d927a3fa0cc546 100644 --- a/packages/icons/src/library/post-terms.svg +++ b/packages/icons/src/library/post-terms.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/post.svg b/packages/icons/src/library/post.svg index ad519387eeaefe..a74c85339cbf1f 100644 --- a/packages/icons/src/library/post.svg +++ b/packages/icons/src/library/post.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/preformatted.svg b/packages/icons/src/library/preformatted.svg index a518ebc77b0f70..2ad10581dc13d4 100644 --- a/packages/icons/src/library/preformatted.svg +++ b/packages/icons/src/library/preformatted.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/previous.svg b/packages/icons/src/library/previous.svg index 6213f948de87ed..6a8338e369805c 100644 --- a/packages/icons/src/library/previous.svg +++ b/packages/icons/src/library/previous.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/published.svg b/packages/icons/src/library/published.svg index 534c6282f33a97..f191f035402150 100644 --- a/packages/icons/src/library/published.svg +++ b/packages/icons/src/library/published.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/pull-left.svg b/packages/icons/src/library/pull-left.svg index 4d7879de2016a6..582d07235a72df 100644 --- a/packages/icons/src/library/pull-left.svg +++ b/packages/icons/src/library/pull-left.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/pull-right.svg b/packages/icons/src/library/pull-right.svg index 129ebd3afeae9d..4bdd74c8444e76 100644 --- a/packages/icons/src/library/pull-right.svg +++ b/packages/icons/src/library/pull-right.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/pullquote.svg b/packages/icons/src/library/pullquote.svg index c89d5eaf2a7308..cd297a22173231 100644 --- a/packages/icons/src/library/pullquote.svg +++ b/packages/icons/src/library/pullquote.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/query-pagination-next.svg b/packages/icons/src/library/query-pagination-next.svg index 2b96775e6b12bb..8fe95f52eb67c4 100644 --- a/packages/icons/src/library/query-pagination-next.svg +++ b/packages/icons/src/library/query-pagination-next.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/query-pagination-numbers.svg b/packages/icons/src/library/query-pagination-numbers.svg index 4751e93e3738d4..502a4bd92c5b3a 100644 --- a/packages/icons/src/library/query-pagination-numbers.svg +++ b/packages/icons/src/library/query-pagination-numbers.svg @@ -1,5 +1,5 @@ - - - + + + diff --git a/packages/icons/src/library/query-pagination-previous.svg b/packages/icons/src/library/query-pagination-previous.svg index 8e9f857406db21..8c0b2c54ef86f9 100644 --- a/packages/icons/src/library/query-pagination-previous.svg +++ b/packages/icons/src/library/query-pagination-previous.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/query-pagination.svg b/packages/icons/src/library/query-pagination.svg index 2e8427aa5ccb87..0008a3f0f2c458 100644 --- a/packages/icons/src/library/query-pagination.svg +++ b/packages/icons/src/library/query-pagination.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/quote.svg b/packages/icons/src/library/quote.svg index 34da3ab17e2c1b..40488082eeaf79 100644 --- a/packages/icons/src/library/quote.svg +++ b/packages/icons/src/library/quote.svg @@ -1,5 +1,5 @@ - + diff --git a/packages/icons/src/library/reaction.svg b/packages/icons/src/library/reaction.svg index 51142f035992fb..3093581a38b4c1 100644 --- a/packages/icons/src/library/reaction.svg +++ b/packages/icons/src/library/reaction.svg @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/packages/icons/src/library/receipt.svg b/packages/icons/src/library/receipt.svg index 0b7fbe4ae3d646..c0920b28e33cc7 100644 --- a/packages/icons/src/library/receipt.svg +++ b/packages/icons/src/library/receipt.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/redo.svg b/packages/icons/src/library/redo.svg index 8f33527f4f67f3..9aeb985e2ddf17 100644 --- a/packages/icons/src/library/redo.svg +++ b/packages/icons/src/library/redo.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/remove-bug.svg b/packages/icons/src/library/remove-bug.svg index ebcd526f741a13..e64b31cd752e87 100644 --- a/packages/icons/src/library/remove-bug.svg +++ b/packages/icons/src/library/remove-bug.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/remove-submenu.svg b/packages/icons/src/library/remove-submenu.svg index d7a90bd8f1fda7..b9092bfcb2a677 100644 --- a/packages/icons/src/library/remove-submenu.svg +++ b/packages/icons/src/library/remove-submenu.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/repeat-all.svg b/packages/icons/src/library/repeat-all.svg index 165100544ed073..e558d47a69a381 100644 --- a/packages/icons/src/library/repeat-all.svg +++ b/packages/icons/src/library/repeat-all.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/repeat.svg b/packages/icons/src/library/repeat.svg index 09ff615b467506..37d180fa86a120 100644 --- a/packages/icons/src/library/repeat.svg +++ b/packages/icons/src/library/repeat.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/replace.svg b/packages/icons/src/library/replace.svg index 729189264b560a..de9de693f1011b 100644 --- a/packages/icons/src/library/replace.svg +++ b/packages/icons/src/library/replace.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/replay.svg b/packages/icons/src/library/replay.svg index e13d8077465a73..2b3313417c23a7 100644 --- a/packages/icons/src/library/replay.svg +++ b/packages/icons/src/library/replay.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/reset.svg b/packages/icons/src/library/reset.svg index f46609b6930ffe..3f11c7ab80f651 100644 --- a/packages/icons/src/library/reset.svg +++ b/packages/icons/src/library/reset.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/resize-corner-ne.svg b/packages/icons/src/library/resize-corner-ne.svg index 9ddfee9e13e27e..d2670f6fa5909d 100644 --- a/packages/icons/src/library/resize-corner-ne.svg +++ b/packages/icons/src/library/resize-corner-ne.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/reusable-block.svg b/packages/icons/src/library/reusable-block.svg index 23cac37a697dfb..38b0620eb1e7fe 100644 --- a/packages/icons/src/library/reusable-block.svg +++ b/packages/icons/src/library/reusable-block.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/rotate-left.svg b/packages/icons/src/library/rotate-left.svg index 78934280f6f7e4..6ddbe98fde761a 100644 --- a/packages/icons/src/library/rotate-left.svg +++ b/packages/icons/src/library/rotate-left.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/rotate-right.svg b/packages/icons/src/library/rotate-right.svg index d6dd79d36e3322..77651d4d875a31 100644 --- a/packages/icons/src/library/rotate-right.svg +++ b/packages/icons/src/library/rotate-right.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/row.svg b/packages/icons/src/library/row.svg index 118bd8853d7688..823d92b608f87c 100644 --- a/packages/icons/src/library/row.svg +++ b/packages/icons/src/library/row.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/rss.svg b/packages/icons/src/library/rss.svg index a6dcd21385bd51..54c5f4cd41432b 100644 --- a/packages/icons/src/library/rss.svg +++ b/packages/icons/src/library/rss.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/scheduled.svg b/packages/icons/src/library/scheduled.svg index d2b32b43f7de85..879d1fb51ded12 100644 --- a/packages/icons/src/library/scheduled.svg +++ b/packages/icons/src/library/scheduled.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/search.svg b/packages/icons/src/library/search.svg index e1c49101f6433d..865aad3d49553d 100644 --- a/packages/icons/src/library/search.svg +++ b/packages/icons/src/library/search.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/seen.svg b/packages/icons/src/library/seen.svg index d0bb3dda32834c..e961db70ef6ddc 100644 --- a/packages/icons/src/library/seen.svg +++ b/packages/icons/src/library/seen.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/send.svg b/packages/icons/src/library/send.svg index 30f83f3f69dd7c..190a45b76df16f 100644 --- a/packages/icons/src/library/send.svg +++ b/packages/icons/src/library/send.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/separator.svg b/packages/icons/src/library/separator.svg index 39da5b3afe0fd0..c50ea841e83258 100644 --- a/packages/icons/src/library/separator.svg +++ b/packages/icons/src/library/separator.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/settings.svg b/packages/icons/src/library/settings.svg index 4b33fc4e90296f..272a12182fc5b4 100644 --- a/packages/icons/src/library/settings.svg +++ b/packages/icons/src/library/settings.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/shadow.svg b/packages/icons/src/library/shadow.svg index d063059e168410..90cd9aca552383 100644 --- a/packages/icons/src/library/shadow.svg +++ b/packages/icons/src/library/shadow.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/share.svg b/packages/icons/src/library/share.svg index 9d22dbf0980777..70bd136f062ada 100644 --- a/packages/icons/src/library/share.svg +++ b/packages/icons/src/library/share.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/shield.svg b/packages/icons/src/library/shield.svg index a8d77662343d2b..4143ef878975d6 100644 --- a/packages/icons/src/library/shield.svg +++ b/packages/icons/src/library/shield.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/shipping.svg b/packages/icons/src/library/shipping.svg index 5bca6bed1e6b6b..7c3dec67173f2d 100644 --- a/packages/icons/src/library/shipping.svg +++ b/packages/icons/src/library/shipping.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/shortcode.svg b/packages/icons/src/library/shortcode.svg index 8ddc91dc591415..892069cc798d60 100644 --- a/packages/icons/src/library/shortcode.svg +++ b/packages/icons/src/library/shortcode.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/shuffle.svg b/packages/icons/src/library/shuffle.svg index fd213393c3da91..910454d8a528e4 100644 --- a/packages/icons/src/library/shuffle.svg +++ b/packages/icons/src/library/shuffle.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/sidebar.svg b/packages/icons/src/library/sidebar.svg index 5126391c79d80e..ce9d9e2254210b 100644 --- a/packages/icons/src/library/sidebar.svg +++ b/packages/icons/src/library/sidebar.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/sides-all.svg b/packages/icons/src/library/sides-all.svg index 21426d10b1ad35..9103608a5aa8ca 100644 --- a/packages/icons/src/library/sides-all.svg +++ b/packages/icons/src/library/sides-all.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/sides-axial.svg b/packages/icons/src/library/sides-axial.svg index 6d1f9c0a02afd1..37934d49b8ef9d 100644 --- a/packages/icons/src/library/sides-axial.svg +++ b/packages/icons/src/library/sides-axial.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/sides-bottom.svg b/packages/icons/src/library/sides-bottom.svg index 78ac693fd5d964..dad40fec97b546 100644 --- a/packages/icons/src/library/sides-bottom.svg +++ b/packages/icons/src/library/sides-bottom.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/sides-horizontal.svg b/packages/icons/src/library/sides-horizontal.svg index 2b4a11a6eef6c6..aa569e1d1498f8 100644 --- a/packages/icons/src/library/sides-horizontal.svg +++ b/packages/icons/src/library/sides-horizontal.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/sides-left.svg b/packages/icons/src/library/sides-left.svg index e6f8f337488274..ad56b7dda2137c 100644 --- a/packages/icons/src/library/sides-left.svg +++ b/packages/icons/src/library/sides-left.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/sides-right.svg b/packages/icons/src/library/sides-right.svg index f0aa8a27e6bfbf..ac739c5a3f4132 100644 --- a/packages/icons/src/library/sides-right.svg +++ b/packages/icons/src/library/sides-right.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/sides-top.svg b/packages/icons/src/library/sides-top.svg index 1d2c9a9a65588c..c68d6b562d4107 100644 --- a/packages/icons/src/library/sides-top.svg +++ b/packages/icons/src/library/sides-top.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/sides-vertical.svg b/packages/icons/src/library/sides-vertical.svg index 4625ca152beb1f..db8e8a53db12f4 100644 --- a/packages/icons/src/library/sides-vertical.svg +++ b/packages/icons/src/library/sides-vertical.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/site-logo.svg b/packages/icons/src/library/site-logo.svg index 7af55495dcbfa5..420d3239d556e8 100644 --- a/packages/icons/src/library/site-logo.svg +++ b/packages/icons/src/library/site-logo.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/sites.svg b/packages/icons/src/library/sites.svg index c9ebbacb24e75e..7e5028718befac 100644 --- a/packages/icons/src/library/sites.svg +++ b/packages/icons/src/library/sites.svg @@ -1,5 +1,5 @@ - - - + + + diff --git a/packages/icons/src/library/skip-back.svg b/packages/icons/src/library/skip-back.svg index 8f858f46406267..a4b4b1e123ca58 100644 --- a/packages/icons/src/library/skip-back.svg +++ b/packages/icons/src/library/skip-back.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/skip-forward.svg b/packages/icons/src/library/skip-forward.svg index a23c3c4929672f..d0ef7a7a560d9c 100644 --- a/packages/icons/src/library/skip-forward.svg +++ b/packages/icons/src/library/skip-forward.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/square.svg b/packages/icons/src/library/square.svg index aaa2a1062ed099..268c8e2e78764e 100644 --- a/packages/icons/src/library/square.svg +++ b/packages/icons/src/library/square.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/stack.svg b/packages/icons/src/library/stack.svg index febe0c67eaa09d..6b5d1bd63eb2fa 100644 --- a/packages/icons/src/library/stack.svg +++ b/packages/icons/src/library/stack.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/star-empty.svg b/packages/icons/src/library/star-empty.svg index 8137f625c22f98..c9edc966f6fefc 100644 --- a/packages/icons/src/library/star-empty.svg +++ b/packages/icons/src/library/star-empty.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/star-filled.svg b/packages/icons/src/library/star-filled.svg index 4c407ff2cc1eab..a6b9fec8e8da67 100644 --- a/packages/icons/src/library/star-filled.svg +++ b/packages/icons/src/library/star-filled.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/star-half.svg b/packages/icons/src/library/star-half.svg index 391acb64a74921..85ad7d125648c0 100644 --- a/packages/icons/src/library/star-half.svg +++ b/packages/icons/src/library/star-half.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/store.svg b/packages/icons/src/library/store.svg index ebc17943f7c89c..dbc3c08375669c 100644 --- a/packages/icons/src/library/store.svg +++ b/packages/icons/src/library/store.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/stretch-full-width.svg b/packages/icons/src/library/stretch-full-width.svg index 9827fcc3e53469..b5e32be3b1644c 100644 --- a/packages/icons/src/library/stretch-full-width.svg +++ b/packages/icons/src/library/stretch-full-width.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/stretch-wide.svg b/packages/icons/src/library/stretch-wide.svg index 690d5f2c531182..8faabbd0d4a328 100644 --- a/packages/icons/src/library/stretch-wide.svg +++ b/packages/icons/src/library/stretch-wide.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/styles.svg b/packages/icons/src/library/styles.svg index e3d2906a27248b..fc664a35f9d03b 100644 --- a/packages/icons/src/library/styles.svg +++ b/packages/icons/src/library/styles.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/subscript.svg b/packages/icons/src/library/subscript.svg index 42c40ed8bb5524..312d55952ba841 100644 --- a/packages/icons/src/library/subscript.svg +++ b/packages/icons/src/library/subscript.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/superscript.svg b/packages/icons/src/library/superscript.svg index b6833882671e01..ba494c5e2ddaed 100644 --- a/packages/icons/src/library/superscript.svg +++ b/packages/icons/src/library/superscript.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/swatch.svg b/packages/icons/src/library/swatch.svg index 90f94765256b6f..89d25c7201e7a2 100644 --- a/packages/icons/src/library/swatch.svg +++ b/packages/icons/src/library/swatch.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/symbol-filled.svg b/packages/icons/src/library/symbol-filled.svg index eafd95acc16dc2..68a02a9095a0fe 100644 --- a/packages/icons/src/library/symbol-filled.svg +++ b/packages/icons/src/library/symbol-filled.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/symbol.svg b/packages/icons/src/library/symbol.svg index 7a10373873fc4e..30e235489e88cb 100644 --- a/packages/icons/src/library/symbol.svg +++ b/packages/icons/src/library/symbol.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/tab-list.svg b/packages/icons/src/library/tab-list.svg index e0a24208898c52..e18f8e4db334f9 100644 --- a/packages/icons/src/library/tab-list.svg +++ b/packages/icons/src/library/tab-list.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/tab-panel.svg b/packages/icons/src/library/tab-panel.svg index 737ad630743c9b..bfd714c4773f98 100644 --- a/packages/icons/src/library/tab-panel.svg +++ b/packages/icons/src/library/tab-panel.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/table-column-after.svg b/packages/icons/src/library/table-column-after.svg index baad08fc49e809..8ed20b41a501fc 100644 --- a/packages/icons/src/library/table-column-after.svg +++ b/packages/icons/src/library/table-column-after.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/table-column-before.svg b/packages/icons/src/library/table-column-before.svg index ce9384e9ff54b9..fc661d4383b99b 100644 --- a/packages/icons/src/library/table-column-before.svg +++ b/packages/icons/src/library/table-column-before.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/table-column-delete.svg b/packages/icons/src/library/table-column-delete.svg index 68ceb4f290ce76..cc6f81e4d5dd42 100644 --- a/packages/icons/src/library/table-column-delete.svg +++ b/packages/icons/src/library/table-column-delete.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/table-of-contents.svg b/packages/icons/src/library/table-of-contents.svg index d037b7ed642b10..44311a1f40956f 100644 --- a/packages/icons/src/library/table-of-contents.svg +++ b/packages/icons/src/library/table-of-contents.svg @@ -1,8 +1,8 @@ - + - - - + + + diff --git a/packages/icons/src/library/table-row-after.svg b/packages/icons/src/library/table-row-after.svg index 82bc7426439661..c8cf36139f4f86 100644 --- a/packages/icons/src/library/table-row-after.svg +++ b/packages/icons/src/library/table-row-after.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/table-row-before.svg b/packages/icons/src/library/table-row-before.svg index a386c4b188d254..60353660697988 100644 --- a/packages/icons/src/library/table-row-before.svg +++ b/packages/icons/src/library/table-row-before.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/table-row-delete.svg b/packages/icons/src/library/table-row-delete.svg index 262e19fc5ff3c7..cda19bdfb4264e 100644 --- a/packages/icons/src/library/table-row-delete.svg +++ b/packages/icons/src/library/table-row-delete.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/table.svg b/packages/icons/src/library/table.svg index 529fa4bfb852fe..5158e72f49ef29 100644 --- a/packages/icons/src/library/table.svg +++ b/packages/icons/src/library/table.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/tablet.svg b/packages/icons/src/library/tablet.svg index e23ac5dfeffc4e..6d0ce4e03e93dc 100644 --- a/packages/icons/src/library/tablet.svg +++ b/packages/icons/src/library/tablet.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/tabs.svg b/packages/icons/src/library/tabs.svg index 7bfe134ac18919..e0eb3011dd7ac4 100644 --- a/packages/icons/src/library/tabs.svg +++ b/packages/icons/src/library/tabs.svg @@ -1,5 +1,5 @@ - - - + + + diff --git a/packages/icons/src/library/tag.svg b/packages/icons/src/library/tag.svg index cfd6b24fc6f4ac..c35f0b8ebcbe14 100644 --- a/packages/icons/src/library/tag.svg +++ b/packages/icons/src/library/tag.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/term-count.svg b/packages/icons/src/library/term-count.svg index 44dfd3e72d8444..7b98d314f42965 100644 --- a/packages/icons/src/library/term-count.svg +++ b/packages/icons/src/library/term-count.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/term-description.svg b/packages/icons/src/library/term-description.svg index b90073c0905418..55b574f581ed1a 100644 --- a/packages/icons/src/library/term-description.svg +++ b/packages/icons/src/library/term-description.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/term-name.svg b/packages/icons/src/library/term-name.svg index 2ef4b613101fb4..1d0e24ac7b5465 100644 --- a/packages/icons/src/library/term-name.svg +++ b/packages/icons/src/library/term-name.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/text-color.svg b/packages/icons/src/library/text-color.svg index d3a0e3ed3475ca..acc45aec6ecc05 100644 --- a/packages/icons/src/library/text-color.svg +++ b/packages/icons/src/library/text-color.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/text-horizontal.svg b/packages/icons/src/library/text-horizontal.svg index cab9ca87cbb5a4..808d5976225e2f 100644 --- a/packages/icons/src/library/text-horizontal.svg +++ b/packages/icons/src/library/text-horizontal.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/text-vertical.svg b/packages/icons/src/library/text-vertical.svg index 20c9015ddd9e4a..be58ad9816cfa2 100644 --- a/packages/icons/src/library/text-vertical.svg +++ b/packages/icons/src/library/text-vertical.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/thumbs-down.svg b/packages/icons/src/library/thumbs-down.svg index 0e794a3fec2067..618eaa655bade7 100644 --- a/packages/icons/src/library/thumbs-down.svg +++ b/packages/icons/src/library/thumbs-down.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/thumbs-up.svg b/packages/icons/src/library/thumbs-up.svg index 2847a67224937b..0d1d11f7a6d216 100644 --- a/packages/icons/src/library/thumbs-up.svg +++ b/packages/icons/src/library/thumbs-up.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/time.svg b/packages/icons/src/library/time.svg index ca2d8b952c5a39..1a3e7fa2d6c878 100644 --- a/packages/icons/src/library/time.svg +++ b/packages/icons/src/library/time.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/tip.svg b/packages/icons/src/library/tip.svg index c698691bbeaa40..40d90ecc8e4a30 100644 --- a/packages/icons/src/library/tip.svg +++ b/packages/icons/src/library/tip.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/title.svg b/packages/icons/src/library/title.svg index 551488f2f9d929..3eccec0660740f 100644 --- a/packages/icons/src/library/title.svg +++ b/packages/icons/src/library/title.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/tool.svg b/packages/icons/src/library/tool.svg index 721a6c3ca7fbf5..8c457cba06364e 100644 --- a/packages/icons/src/library/tool.svg +++ b/packages/icons/src/library/tool.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/trash.svg b/packages/icons/src/library/trash.svg index 6150354a2440f7..159b11d81e1a48 100644 --- a/packages/icons/src/library/trash.svg +++ b/packages/icons/src/library/trash.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/trending-down.svg b/packages/icons/src/library/trending-down.svg index ef83831e365b30..08a795990f13e1 100644 --- a/packages/icons/src/library/trending-down.svg +++ b/packages/icons/src/library/trending-down.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/trending-up.svg b/packages/icons/src/library/trending-up.svg index 6e6c1cea7e3525..cdccd9009de026 100644 --- a/packages/icons/src/library/trending-up.svg +++ b/packages/icons/src/library/trending-up.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/typography.svg b/packages/icons/src/library/typography.svg index 2bc39e1d6d3a00..20b858a988f6da 100644 --- a/packages/icons/src/library/typography.svg +++ b/packages/icons/src/library/typography.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/undo.svg b/packages/icons/src/library/undo.svg index 581f3a7ac953a2..4f7cb924f268ce 100644 --- a/packages/icons/src/library/undo.svg +++ b/packages/icons/src/library/undo.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/ungroup.svg b/packages/icons/src/library/ungroup.svg index 30730305151425..cb77651c6ea394 100644 --- a/packages/icons/src/library/ungroup.svg +++ b/packages/icons/src/library/ungroup.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/unlock.svg b/packages/icons/src/library/unlock.svg index 37d2e14d42fad3..3d12eb477c7558 100644 --- a/packages/icons/src/library/unlock.svg +++ b/packages/icons/src/library/unlock.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/unseen.svg b/packages/icons/src/library/unseen.svg index 9a56bb5718bd70..61cba94a3b0f8b 100644 --- a/packages/icons/src/library/unseen.svg +++ b/packages/icons/src/library/unseen.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/update.svg b/packages/icons/src/library/update.svg index cbc707c2f54d1e..abf7d3491b6ce1 100644 --- a/packages/icons/src/library/update.svg +++ b/packages/icons/src/library/update.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/upload.svg b/packages/icons/src/library/upload.svg index 0b797bcf3e5fad..65904dcace2147 100644 --- a/packages/icons/src/library/upload.svg +++ b/packages/icons/src/library/upload.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/icons/src/library/verse.svg b/packages/icons/src/library/verse.svg index a10e4d68a28c39..5ab6ae86bd3414 100644 --- a/packages/icons/src/library/verse.svg +++ b/packages/icons/src/library/verse.svg @@ -1,5 +1,5 @@ - - - + + + diff --git a/packages/icons/src/library/video.svg b/packages/icons/src/library/video.svg index e4777578cb1bea..c61c3e3dbfdf5f 100644 --- a/packages/icons/src/library/video.svg +++ b/packages/icons/src/library/video.svg @@ -1,4 +1,4 @@ - + diff --git a/packages/icons/src/library/widget.svg b/packages/icons/src/library/widget.svg index 2599fad2c32be9..3b3535aff11624 100644 --- a/packages/icons/src/library/widget.svg +++ b/packages/icons/src/library/widget.svg @@ -1,4 +1,4 @@ - - + + diff --git a/packages/icons/src/library/word-count.svg b/packages/icons/src/library/word-count.svg index d14097dab14741..e37a50c9048c70 100644 --- a/packages/icons/src/library/word-count.svg +++ b/packages/icons/src/library/word-count.svg @@ -1,4 +1,4 @@ - - + + diff --git a/phpunit/block-bindings-test.php b/phpunit/block-bindings-test.php index 6f78b54adba2a3..5ce439c88cf5ff 100644 --- a/phpunit/block-bindings-test.php +++ b/phpunit/block-bindings-test.php @@ -157,19 +157,13 @@ public function test_update_block_with_value_from_source( $bound_attribute, $blo public function data_different_get_value_callbacks() { return array( - 'pass arguments to source' => array( + 'pass arguments to source' => array( function ( $source_args, $block_instance, $attribute_name ) { $value = $source_args['key']; return "The attribute name is '$attribute_name' and its binding has argument 'key' with value '$value'."; }, "

The attribute name is 'content' and its binding has argument 'key' with value 'test'.

", ), - 'unsafe HTML should be sanitized' => array( - function () { - return ''; - }, - '

alert("Unsafe HTML")

', - ), 'symbols and numbers should be rendered correctly' => array( function () { return '$12.50'; @@ -211,6 +205,35 @@ public function test_different_get_value_callbacks( $get_value_callback, $expect ); } + /** + * Tests that unsafe HTML returned by the source is sanitized. + * + * @covers ::register_block_bindings_source + */ + public function test_unsafe_html_from_source_is_sanitized() { + register_block_bindings_source( + self::SOURCE_NAME, + array( + 'label' => self::SOURCE_LABEL, + 'get_value_callback' => function () { + return ''; + }, + ) + ); + + $block_content = << +

This should not appear

+ +HTML; + $parsed_blocks = parse_blocks( $block_content ); + $block = new WP_Block( $parsed_blocks[0] ); + $result = $block->render(); + + $processor = new WP_HTML_Tag_Processor( $result ); + $this->assertFalse( $processor->next_tag( 'SCRIPT' ), 'The SCRIPT element should be removed.' ); + } + /** * Tests passing `uses_context` as argument to the source. * @@ -500,9 +523,10 @@ public function test_update_list_item_source_image_renders_after_kses() { $block_content ); - $this->assertMatchesRegularExpression( - '#
  • Bound ]*class="wp-image-42"[^>]*src="https://example\.com/inline-image\.jpg"[^>]*alt="Inline image"[^>]*/?>
  • #', + $this->assertEqualHTML( + '
  • Bound Inline image
  • ', $result, + '', 'The source image should render in the list item content after sanitization.' ); } @@ -519,7 +543,7 @@ public function test_update_list_item_unsafe_source_markup_is_sanitized() { HTML; $result = $this->render_list_item_with_source_value( - 'Bound Inline image ', + 'Bound Inline image', $block_content ); @@ -533,11 +557,14 @@ public function test_update_list_item_unsafe_source_markup_is_sanitized() { $result, 'Event handler attributes should be stripped from list item source content.' ); - $this->assertMatchesRegularExpression( - '#]*src="https://example\.com/inline-image\.jpg"[^>]*alt="Inline image"[^>]*/?>#', - $result, - 'Safe image markup should remain after sanitization.' - ); + + $processor = new WP_HTML_Tag_Processor( $result ); + $this->assertTrue( $processor->next_tag( 'IMG' ), 'Safe image markup should remain after sanitization.' ); + $this->assertSame( 'https://example.com/inline-image.jpg', $processor->get_attribute( 'src' ), 'The image src should be preserved.' ); + $this->assertSame( 'Inline image', $processor->get_attribute( 'alt' ), 'The image alt should be preserved.' ); + + $processor = new WP_HTML_Tag_Processor( $result ); + $this->assertFalse( $processor->next_tag( 'SCRIPT' ), 'The SCRIPT element should be removed.' ); } /** diff --git a/phpunit/blocks/class-wp-navigation-block-renderer-test.php b/phpunit/blocks/class-wp-navigation-block-renderer-test.php index ed9d06c8761d71..28990fc5b923cd 100644 --- a/phpunit/blocks/class-wp-navigation-block-renderer-test.php +++ b/phpunit/blocks/class-wp-navigation-block-renderer-test.php @@ -33,14 +33,8 @@ public function test_gutenberg_default_block_is_enclosed_in_li_tags() { // Invoke the private method. $result = $method->invoke( $reflection, $navigation_link_block ); - if ( is_wp_version_compatible( '7.0' ) ) { - $expected = ''; - } else { - // Block markup for WP 6.9 (space before wp-block-navigation-item class) - // TODO: Remove the second expected markup after WP 6.9 support is dropped and the old markup is no longer generated. - $expected = ''; - $this->assertEquals( $expected, $result ); - } + $expected = ''; + $this->assertEqualHTML( $expected, $result ); } /** diff --git a/phpunit/class-block-fixture-test.php b/phpunit/class-block-fixture-test.php index a1ef73f4222169..dc8720d9d4aa5d 100644 --- a/phpunit/class-block-fixture-test.php +++ b/phpunit/class-block-fixture-test.php @@ -35,18 +35,10 @@ public function test_kses_doesnt_change_fixtures( $block, $filename ) { $kses_block = wp_kses_post( $block ); - // KSES adds a space at the end of self-closing tags, add it to the original to match. - $block = preg_replace( '|([^ ])/>|', '$1 />', $block ); - - // KSES replaces \u005c with \\ in block comment delimiters. For some - // reason this if only applied to $block, though it passes locally. - $block = $this->replace_backslash( $block ); - $kses_block = $this->replace_backslash( $kses_block ); - // KSES removes the last semi-colon from style attributes, remove it from the original to match. $block = preg_replace( '/style="([^"]*);"/', 'style="$1"', $block ); - $this->assertSame( $block, $kses_block, "Failed to match $filename" ); + $this->assertEqualHTML( $block, $kses_block, '', "Failed to match $filename" ); } public function data_block_fixtures() { diff --git a/phpunit/class-wp-rest-icon-controller-test.php b/phpunit/class-wp-rest-icon-controller-test.php index 709e62f10d2169..ffd38edb445021 100644 --- a/phpunit/class-wp-rest-icon-controller-test.php +++ b/phpunit/class-wp-rest-icon-controller-test.php @@ -138,10 +138,16 @@ public function test_get_item_returns_specific_icon() { $this->assertSame( 'core/arrow-left', $data['name'] ); $this->assertSame( 'Arrow Left', $data['label'] ); $this->assertNotEmpty( $data['content'] ); + $this->assertStringStartsWith( - ' WP_Theme_JSON_Gutenberg::LATEST_SCHEMA ), $theme_json_data ) + ); + + $this->assertIsString( $theme_json->get_stylesheet() ); + } + + /** + * Data provider. + * + * @return array + */ + public function data_get_stylesheet_ignores_values_of_unexpected_types() { + return array( + 'element custom css as an object' => array( + array( 'styles' => array( 'elements' => array( 'link' => array( 'css' => array( 'color' => 'red' ) ) ) ) ), + ), + 'block custom css as a list' => array( + array( 'styles' => array( 'blocks' => array( 'core/paragraph' => array( 'css' => array( 'color: red;' ) ) ) ) ), + ), + 'ref as an array' => array( + array( 'styles' => array( 'color' => array( 'text' => array( 'ref' => array( 'styles', 'color' ) ) ) ) ), + ), + 'spacing scale as a string' => array( + array( 'settings' => array( 'spacing' => array( 'spacingScale' => '1.5' ) ) ), + ), + 'spacing scale unit as an array' => array( + array( + 'settings' => array( + 'spacing' => array( + 'spacingScale' => array( + 'operator' => '*', + 'increment' => 1.5, + 'steps' => 7, + 'mediumStep' => 1.5, + 'unit' => array( 'rem' ), + ), + ), + ), + ), + ), + 'shared style variation as a string' => array( + array( 'styles' => array( 'variations' => array( 'plain' => 'red' ) ) ), + ), + 'block types item as an array' => array( + array( 'blockTypes' => array( array( 'core/button' ) ) ), + ), + ); + } + /** * @dataProvider data_get_styles_for_block_with_style_variations * @@ -7276,6 +7332,20 @@ public function data_process_blocks_custom_css() { ), 'expected' => '', ), + 'css as an object' => array( + 'input' => array( + 'selector' => '.foo', + 'css' => array( 'color' => 'red' ), + ), + 'expected' => '', + ), + 'css as a list of strings' => array( + 'input' => array( + 'selector' => '.foo', + 'css' => array( 'color: red;' ), + ), + 'expected' => '', + ), 'no nested selectors' => array( 'input' => array( 'selector' => '.foo', diff --git a/test/e2e/specs/editor/blocks/classic.spec.js b/test/e2e/specs/editor/blocks/classic.spec.js index e1843f0f619e5b..7a16663deb02a2 100644 --- a/test/e2e/specs/editor/blocks/classic.spec.js +++ b/test/e2e/specs/editor/blocks/classic.spec.js @@ -65,7 +65,9 @@ test.describe( 'Classic', () => { // Wait for upload (increased timeout for client-side media processing). await expect( - page.getByRole( 'checkbox', { name: fileName } ) + page + .getByRole( 'tabpanel', { name: 'Media Library' } ) + .getByRole( 'checkbox', { name: fileName } ) ).toBeChecked( { timeout: 30_000 } ); const createGallery = page.getByRole( 'button', { diff --git a/test/e2e/specs/editor/plugins/react-18-compat-block.spec.js b/test/e2e/specs/editor/plugins/react-18-compat-block.spec.js index dc4cdcb2e593cb..1df9850ea77e20 100644 --- a/test/e2e/specs/editor/plugins/react-18-compat-block.spec.js +++ b/test/e2e/specs/editor/plugins/react-18-compat-block.spec.js @@ -2,8 +2,9 @@ const { test, expect } = require( '@wordpress/e2e-test-utils-playwright' ); // This block deliberately exercises legacy React 18 patterns (a bundled React // 18 development JSX runtime that produces `Symbol.for( 'react.element' )` -// elements, a function component relying on `defaultProps`, and the `inert` -// attribute) while the editor runs on the externalized React 19 runtime. +// elements, function components relying on `defaultProps` both plain and +// wrapped in `memo()`, and the `inert` attribute) while the editor runs on the +// externalized React 19 runtime. // // It is expected to FAIL until the React 19 compatibility layer can render // elements created by an older React runtime and restore `defaultProps` @@ -46,6 +47,19 @@ test.describe( 'React 18 compatibility block (React 19 runtime)', () => { block.locator( '.react-18-compat-block__greeting' ) ).toHaveText( 'Hello from defaultProps' ); + // `defaultProps` declared on the component inside a `memo()` wrapper + // are resolved too, whichever runtime created the element — including + // the bundled React 18 one, which never wrote them into the element. + await expect( + block.locator( '.react-18-compat-block__memo-greeting' ) + ).toHaveText( 'Hello from memo defaultProps' ); + await expect( + block.locator( '.react-18-compat-block__memo-greeting-jsx' ) + ).toHaveText( 'Hello from memo defaultProps' ); + await expect( + block.locator( '.react-18-compat-block__memo-greeting-legacy' ) + ).toHaveText( 'Hello from memo defaultProps' ); + // `inert=''` attribute specified as string is rendered as `true` by a patched React 19 runtime. const inertString = block.locator( '.react-18-compat-block__inert-string' diff --git a/tools/build-scripts/packages/build-vendors.mjs b/tools/build-scripts/packages/build-vendors.mjs index 2349af66b2ec65..71edf964b57051 100644 --- a/tools/build-scripts/packages/build-vendors.mjs +++ b/tools/build-scripts/packages/build-vendors.mjs @@ -10,6 +10,7 @@ import { patchTransitionalSymbols, patchCoerceRef, patchInertAttribute, + patchMemoDefaultProps, } from './codemod-react-legacy-element.mjs'; const __dirname = path.dirname( fileURLToPath( import.meta.url ) ); @@ -22,12 +23,14 @@ const WORKSPACE_DIR = path.resolve( __dirname, '..' ); // Patchers that adapt React 19 to also accept legacy (React 17/18) elements. // The `react` core bundle only needs the element-symbol patch, while the -// `react-dom` bundle additionally needs the DOM-only ref and `inert` patches. +// `react-dom` bundle additionally needs the DOM-only ref and `inert` patches, +// and the reconciler patch that restores `memo()` `defaultProps`. const patchReact = createPatcher( patchTransitionalSymbols ); const patchReactDOM = createPatcher( patchTransitionalSymbols, patchCoerceRef, - patchInertAttribute + patchInertAttribute, + patchMemoDefaultProps ); const requireFromWorkspace = createRequire( diff --git a/tools/build-scripts/packages/codemod-react-legacy-element.mjs b/tools/build-scripts/packages/codemod-react-legacy-element.mjs index 1ff1e7c9a23bff..5ca894af401ab6 100644 --- a/tools/build-scripts/packages/codemod-react-legacy-element.mjs +++ b/tools/build-scripts/packages/codemod-react-legacy-element.mjs @@ -21,6 +21,10 @@ * coerces any string `inert` value to `true` in the `case 'inert'` of the * attribute-setting switch. * + * A third React DOM patch restores `defaultProps` for the component inside a + * `memo()` wrapper. React 18 resolved those in `updateMemoComponent`, not at + * element creation, so the codemod puts them back in the same place. + * * Both patches also emit a one-time `console.warn` (prefixed * `[wordpress-react-19]`) when their compatibility path is exercised at runtime: * once when a legacy element is encountered, and once when an empty-string @@ -47,10 +51,16 @@ const DEFAULT_LEGACY_NAME = 'REACT_LEGACY_ELEMENT_TYPE'; // `inert`) at runtime, warning at most once per `key`. const WARN_HELPER_NAME = '__wpWarnCompat'; +// Name of the helper that resolves the `defaultProps` of the component inside a +// `memo()` wrapper, injected into bundles that {@link patchMemoDefaultProps} +// touches. +const RESOLVE_MEMO_HELPER_NAME = '__wpResolveMemoDefaultProps'; + // Warning ids. Each id warns at most once; call sites pass only the id and the // message is looked up from the table embedded in the injected helper. const LEGACY_ELEMENT_WARNING = 'legacy-element'; const INERT_WARNING = 'inert'; +const MEMO_DEFAULT_PROPS_WARNING = 'memo-default-props'; // Warning messages keyed by id. Embedded once into the patched bundle by the // injected helper, so call sites never repeat the message text. The @@ -60,10 +70,12 @@ const WARNING_MESSAGES = { 'A React element created by an older React runtime (React 17/18) was detected and is handled by a compatibility patch. This usually means a bundled package ships its own React; align it with React 19.', [ INERT_WARNING ]: 'An empty-string `inert` attribute was used. React 19 treats `inert` as a boolean, so the value was coerced to `true` by a compatibility patch. Pass `inert={true}` instead.', + [ MEMO_DEFAULT_PROPS_WARNING ]: + '`defaultProps` on a component wrapped in `memo()` was removed in React 19 and is restored by a compatibility patch. Use default parameters instead.', }; /** - * Source for the compatibility-warning helper that {@link injectWarnHelper} + * Source for the compatibility-warning helper that {@link injectHelpers} * inserts into every patched bundle. It is a plain function declaration so it * hoists to the top of the enclosing scope and is reachable from the patched * call sites via closure. Call sites pass only a warning id; the message table @@ -86,6 +98,28 @@ function warnHelperSource() { ); } +/** + * Source for the helper that resolves `defaultProps` declared on the component + * inside a `memo()` wrapper. It mirrors React 18's + * `resolveDefaultPropsOnNonClassComponent`, which React 19 compiles away. + * + * @return {string} Helper source code. + */ +function resolveMemoHelperSource() { + return ( + `function ${ RESOLVE_MEMO_HELPER_NAME }(type, props) {` + + `var defaultProps = type && type.defaultProps;` + + `if (!defaultProps) return props;` + + `${ WARN_HELPER_NAME }("${ MEMO_DEFAULT_PROPS_WARNING }");` + + `var resolved = Object.assign({}, props);` + + `for (var name in defaultProps) {` + + `if (resolved[name] === undefined) resolved[name] = defaultProps[name];` + + `}` + + `return resolved;` + + `}\n` + ); +} + /** * Extracts the immediately-invoked function expression (IIFE) from a top-level * statement, if it is one. Handles esbuild's `var Global = (() => { … })();` @@ -126,28 +160,29 @@ function getIifeFunction( statement ) { } /** - * Inserts the compatibility-warning helper at the start of the bundle's IIFE - * body, so it stays scoped to the bundle instead of leaking a global (these - * bundles run as classic scripts). The helper is reachable from the patched - * call sites deeper in the same IIFE via closure. + * Inserts the compatibility helpers at the start of the bundle's IIFE body, so + * they stay scoped to the bundle instead of leaking globals (these bundles run + * as classic scripts). They are reachable from the patched call sites deeper in + * the same IIFE via closure. * * Falls back to prepending at the top of the file when no top-level IIFE is - * found, which keeps the helper available regardless of the bundle shape. + * found, which keeps the helpers available regardless of the bundle shape. * - * @param {Object} ast Parsed AST (File node). - * @param {MagicString} ms Magic string for the source being edited. + * @param {Object} ast Parsed AST (File node). + * @param {MagicString} ms Magic string for the source being edited. + * @param {string} source Helper source code to insert. */ -function injectWarnHelper( ast, ms ) { +function injectHelpers( ast, ms, source ) { for ( const statement of ast.program.body ) { const iife = getIifeFunction( statement ); if ( iife ) { // `body.start` is the opening `{`; insert right after it. - ms.appendRight( iife.body.start + 1, `\n${ warnHelperSource() }` ); + ms.appendRight( iife.body.start + 1, `\n${ source }` ); return; } } - ms.prepend( warnHelperSource() ); + ms.prepend( source ); } /** @@ -558,9 +593,172 @@ function patchInertAttribute( ast, ms, filename ) { } /** - * A patch pass operates on a shared AST and `magic-string` for a single source. + * Returns the object of a `. === ` comparison, in + * either operand order. + * + * @param {Object} node AST node. + * @param {string} property Property name to match. + * @param {( node: Object ) => boolean} isValue Predicate for the compared value. + * @return {Object|undefined} The object the property was read from, if matched. + */ +function getComparedMemberObject( node, property, isValue ) { + if ( + ! node || + node.type !== 'BinaryExpression' || + node.operator !== '===' + ) { + return undefined; + } + + for ( const [ member, value ] of [ + [ node.left, node.right ], + [ node.right, node.left ], + ] ) { + if ( + member.type === 'MemberExpression' && + ! member.computed && + member.property.type === 'Identifier' && + member.property.name === property && + isValue( value ) + ) { + return member.object; + } + } + + return undefined; +} + +/** + * Flattens an `&&` chain into its operands. + * + * @param {Object} node AST node. + * @param {Object[]} operands Accumulator. + * @return {Object[]} The operands of the chain. + */ +function flattenLogicalAnd( node, operands = [] ) { + if ( node.type === 'LogicalExpression' && node.operator === '&&' ) { + flattenLogicalAnd( node.left, operands ); + flattenLogicalAnd( node.right, operands ); + } else { + operands.push( node ); + } + return operands; +} + +const isUndefinedValue = ( node ) => + ( node.type === 'UnaryExpression' && node.operator === 'void' ) || + ( node.type === 'Identifier' && node.name === 'undefined' ); + +const isNullValue = ( node ) => node.type === 'NullLiteral'; + +/** + * Restores `defaultProps` for the component inside a `memo()` wrapper. + * + * React 18 resolved these in the reconciler rather than at element creation: + * `beginWork`'s `MemoComponent` case resolved the wrapper's own `defaultProps` + * and then the inner component's before calling `updateMemoComponent`. React 19 + * compiles both away, and the wrapper object that `createElement` and `jsx` see + * carries no `defaultProps` of its own, so patching element creation would miss + * every memo element built by a bundled React 17/18 runtime. Patching the + * reconciler catches them all. + * + * Only the inner resolution is restored. The wrapper's own `defaultProps` are + * still applied by React 19's `createElement`, and by the `jsx` shim in + * `tools/react-19`. + * + * `updateMemoComponent` is identified structurally, by the test that decides + * whether the memo can be upgraded to a `SimpleMemoComponent`: it is the only + * place that checks `.defaultProps === undefined` and + * `.compare === null` together. Exactly one such function is + * expected, so anything else is treated as an error. + * + * @param {Object} ast Parsed AST (File node). + * @param {MagicString} ms Magic string for the source being edited. + * @param {string} filename Source name, for error messages. + * @param {Set} helpers Helper sources to inject into the bundle. + */ +function patchMemoDefaultProps( ast, ms, filename, helpers ) { + const matches = []; + + traverse( ast, { + LogicalExpression( path ) { + // Only inspect the outermost `&&` chain, so a chain is not matched + // once per nested `LogicalExpression`. + if ( + path.node.operator !== '&&' || + ( path.parent.type === 'LogicalExpression' && + path.parent.operator === '&&' ) + ) { + return; + } + + let componentName; + let checksDefaultProps = false; + for ( const operand of flattenLogicalAnd( path.node ) ) { + if ( + getComparedMemberObject( + operand, + 'defaultProps', + isUndefinedValue + ) + ) { + checksDefaultProps = true; + } + const component = getComparedMemberObject( + operand, + 'compare', + isNullValue + ); + if ( component?.type === 'Identifier' ) { + componentName = component.name; + } + } + + if ( ! checksDefaultProps || ! componentName ) { + return; + } + + const fn = path.getFunctionParent(); + if ( fn && fn.node.body.type === 'BlockStatement' ) { + matches.push( { fn: fn.node, componentName } ); + } + }, + } ); + + if ( matches.length !== 1 ) { + throw new Error( + `[react-patch] Expected exactly one \`updateMemoComponent\`-like function (testing \`defaultProps === undefined\` and \`compare === null\`) in ${ filename }, found ${ matches.length }.` + ); + } + + // `updateMemoComponent( current, workInProgress, Component, nextProps, … )`: + // the props to resolve are the parameter after the memo wrapper. + const { fn, componentName } = matches[ 0 ]; + const componentIndex = fn.params.findIndex( + ( param ) => param.type === 'Identifier' && param.name === componentName + ); + const propsParam = fn.params[ componentIndex + 1 ]; + if ( componentIndex === -1 || propsParam?.type !== 'Identifier' ) { + throw new Error( + `[react-patch] Could not locate the props parameter following \`${ componentName }\` in ${ filename }.` + ); + } + + helpers.add( resolveMemoHelperSource() ); + + // Resolving at the top of the function covers both the mount and the update + // branch, and `lazy( memo( … ) )`, which routes through here too. + ms.appendRight( + fn.body.start + 1, + `${ propsParam.name } = ${ RESOLVE_MEMO_HELPER_NAME }(${ componentName }.type, ${ propsParam.name });` + ); +} + +/** + * A patch pass operates on a shared AST and `magic-string` for a single source, + * and may add to the set of helper sources injected into the bundle. * - * @typedef {( ast: Object, ms: MagicString, filename: string ) => void} PatchPass + * @typedef {( ast: Object, ms: MagicString, filename: string, helpers: Set< string > ) => void} PatchPass */ /** @@ -578,18 +776,24 @@ export function createPatcher( ...passes ) { return ( code, filename = 'input.js' ) => { const ast = parse( code, { sourceType: 'unambiguous' } ); const ms = new MagicString( code ); + const helpers = new Set( [ warnHelperSource() ] ); for ( const pass of passes ) { - pass( ast, ms, filename ); + pass( ast, ms, filename, helpers ); } - // Inject the compatibility-warning helper that the patches call at - // runtime. It is a hoisted function declaration, so it is reachable from - // the patched call sites (inside the bundle's IIFE) via closure. - injectWarnHelper( ast, ms ); + // Inject the helpers that the patches call at runtime. They are hoisted + // function declarations, so they are reachable from the patched call + // sites (inside the bundle's IIFE) via closure. + injectHelpers( ast, ms, [ ...helpers ].join( '' ) ); return ms.toString(); }; } -export { patchTransitionalSymbols, patchCoerceRef, patchInertAttribute }; +export { + patchTransitionalSymbols, + patchCoerceRef, + patchInertAttribute, + patchMemoDefaultProps, +};